Announcement

Collapse
No announcement yet.
X
  • Filter
  • Time
Clear All
new posts

    TreeGrid filtering of a float value

    Hello Support,

    I have a TreeGrid bound to a DataSource containing a LocaleFloat field. This TreeGrid has filtering enabled. When I use the "ICONTAINS" OperatorId on this LocaleFloat field I get exactly the same behaviour as specified in this Topic: (See 3rd posting)

    https://forums.smartclient.com/forum...er-float-value

    Is it possible that there is a regression to 12.1 that made this bug reoccur? Thanks for your help!

    BR
    Jan

    onModuleLoad:
    Code:
        @Override
        public void onModuleLoad() {
            VLayout screen = new VLayout();
            screen.setWidth100();
            screen.setHeight100();
            screen.setAlign(VerticalAlignment.CENTER);
    
            Label label = new Label(getBaseMessages().fatalerFehlerInDerAnwendung());
            label.setAlign(Alignment.CENTER);
    
            ListGrid listGrid = new ListGrid();
            listGrid.setShowFilterEditor(true);
            listGrid.setFilterOnKeypress(true);
            listGrid.setAllowFilterExpressions(true);
            listGrid.setAllowFilterOperators(true);
    
            ListGridField itemField = new ListGridField("item");
            ListGridField priceField = new ListGridField("price");
            priceField.setFilterOperator(OperatorId.ICONTAINS);
            listGrid.setFields(itemField, priceField);
            listGrid.setDataSource(createDS());
    
            listGrid.fetchData();
            screen.addMember(listGrid);
            screen.draw();
        }
    
     private DataSource createDS() {
            DataSource ds = new DataSource();
            ds.setID("example");
            ds.setClientOnly(true);
            ds.setRecordXPath("/list/item");
            DataSourceTextField itemField = new DataSourceTextField("item");
            // itemField.setPrimaryKey(true);
            DataSourceFloatField priceField = new DataSourceFloatField("price");
            priceField.setType(FieldType.LOCALEFLOAT);
    
            ds.setFields(itemField, priceField);
    
            ds.setDataURL("data.xml");
    
            return ds;
        }
    data.xml:
    Code:
    <list>  
    
    <item>  
        <item>Item 1</item>  
        <price>123</price>  
    </item>  
    <item>  
        <item>Item 2</item>  
        <price>456</price>  
    </item>  
    <item>  
        <item>Item 3</item>  
        <price>1234</price>  
    </item>  
    <item>  
        <item>Item 4</item>  
        <price>4567</price>  
    </item>  
    </list>

    #2
    iContains/contains aren't available to numeric types by default - we're looking into whether they, or at least "contains", ought to be (numbers don't need iContains case-support, of course).

    In the meantime, you should find things working as you expect if you just make the operator available to the localeFloat type, via a call to DataSource.addSearchOperator().

    Comment

    Working...
    X