[CLOSED] Problems Numeric Filter

  1. #1

    [CLOSED] Problems Numeric Filter

    Hi Community !

    Please check the code sample below:

    
    <%@ Page Language="C#" %>
    <%@ Import Namespace="System.Collections.Generic" %>
    
    <script runat="server">
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!X.IsAjaxRequest)
            {
                Store1.DataSource = new object[]
                        {
                            new {Text = "America", Value = "Am"},
                            new {Text = "Europe", Value = "Eu"}
                        };
                Store1.DataBind();
            }
       }
    
        protected void ComboBox1_Select(object sender, DirectEventArgs e)
        {
            try
            {
                switch (ComboBox1.SelectedItem.Value)
                {
                    case "Am":
                        this.Store2.DataSource = new object[]
                        {
                            new object[] { 1, "Argentina", "LightBlue/White", "S", "N"},
                            new object[] { 2, " Bolivia", "Yellow/Green/Red", "N", "S"},
                            new object[] { 3, "Brazil", "Yellow/Green/Blue", "S", "S"},
                            new object[] { 4, "Chile", "Red/White/Blue", "N", "S"},
                             new object[]{ 5, "Colombia", "Red/White/Blue", "S", "N"},
                             new object[]{ 6, "Peru", "Red/White", "N", "N"}
                        };
    
                        this.Store2.DataBind();
                        break;
    
                    case "Eu":
                        this.Store2.DataSource = new object[]
                        {
                            new object[] { 1, "Spain", "Yellow/Red", "S", "N"},
                            new object[] { 2, "France", "Blue/White/Red", "S", "S"},
                            new object[] { 3, "Italy", "Green/White/Red", "N", "S"},
                            new object[] { 4, "Germany", "Black/Red/Yellow", "N", "N"},
                            new object[] { 5, "Greece", "Blue/White", "S", "S"},
                            new object[] { 6, "Polonia", "Blue/Red", "N", "N"}
                        };
    
                        this.Store2.DataBind();
                        break;
                }
    
                Store2.ClearFilter();
                Store2.Filters.Clear();
                Store2.Sorters.Clear();
            }
            catch (Exception)
            {
            }
        }
    </script>
    
    <!DOCTYPE html>
    
    <html>
    
    <head id="Head1" runat="server">
        <title>GridPanel with Local Filtering, Sorting and Paging - Ext.NET Examples</title>
        
        <script>
            var getFilters = function () {
                var out = [],
                    filters = this.up('grid').store.getFilters().items,
                    length = filters.length,
                    i;
    
                for (i = 0; i < length; i++) {
                    out[i] = filters[i].serialize();
                }
    
                Ext.Msg.alert('Filters', Ext.encode(out));
            };
    
            Ext.grid.filters.filter.List.override({
                // That is overridden only to support #1287
                getOptionsFromStore: function (store) {
                    var me = this,
                        data = store.isPagingStore ? store.allData : store.getData(),
                        map = {},
                        ret = [],
                        dataIndex = me.dataIndex,
                        labelIndex = me.labelIndex,
                        items, i, length, recData, idValue, labelValue;
    
                    if (store.isFiltered() && !store.remoteFilter) {
                        if (store.isPagingStore) {
                            data = store.getData().getSource();
                        } else {
                            data = data.getSource();
                        }
                    }
    
                    items = data.items;
                    length = items.length;
    
                    for (i = 0; i < length; ++i) {
                        recData = items[i].data;
                        idValue = recData[dataIndex];
                        labelValue = recData[labelIndex];
    
                        if (labelValue === undefined) {
                            labelValue = idValue;
                        }
    
                        if (!map[idValue]) {
                            map[idValue] = 1;
                            ret.push([
                                idValue,
                                labelValue
                            ]);
                        }
                    }
    
                    return ret;
                }
            });
    
            Ext.define('ExtRM.overrides.RangeMenu', {
                override: 'Ext.ux.grid.menu.RangeMenu',
    
                setValue: function () {
                    this.preventChange = true;
                    this.callOverridden(arguments);
                    this.preventChange = false;
                },
    
                onInputChange: function () {
                    if (this.preventChange) {
                        return;
                    }
                    else {
                        this.callOverridden(arguments);
                    }
                }
            });
        </script>
    </head>
    
    <body>
        <form id="Form1" runat="server">
            <ext:ResourceManager ID="ResourceManager1" runat="server" />
            <ext:Viewport ID="ViewPort1" runat="server" Layout="BorderLayout">
                <Items>
    
                <ext:FormPanel ID="FormPanelTools" runat="server" 
                            Region="North"
                            BodyPadding="5"
                            Frame="true">
                        <DockedItems>
                            <ext:Toolbar ID="Toolbar1" runat="server" Dock="Top" >
                                <Items>
                                    <ext:FieldContainer runat="server" Layout="HBoxLayout" AnchorHorizontal="100%">
                                        <Items>
                                            <ext:ComboBox ID="ComboBox1" runat="server"
                                                    MsgTarget="Side" 
                                                    AllowBlank="false"
                                                    ValueField="Value"    
                                                    DisplayField="Text"
                                                    FieldLabel="Field ComboBox1" >
                                                <Store>
                                                    <ext:Store ID="Store1" runat="server" AutoLoad="false" >               
                                                        <Model>
                                                            <ext:Model ID="Model1" runat="server">
                                                                <Fields>
                                                                    <ext:ModelField Name="Value"/>
                                                                    <ext:ModelField Name="Text" />
                                                                </Fields>
                                                            </ext:Model>
                                                        </Model>
                                                    </ext:Store>
                                                </Store>
                                                <DirectEvents>
                                                    <Select OnEvent="ComboBox1_Select" >
                                                    </Select>
                                                </DirectEvents>
                                                <Triggers>
                                                    <ext:FieldTrigger Icon="Clear" Hidden="true" QTip="Limpia Selección" />
                                                </Triggers>
                                                <Listeners>
                                                    <BeforeQuery Handler="this.getTrigger(0)[this.getRawValue().toString().length == 0 ? 'hide' : 'show']();" />
                                                    <Change Handler="this.getTrigger(0).show();" />
                                                    <Select Handler="#{GridPanel1}.filters.clearFilters(); #{Column5}.filter.filter.setValue({gt:2, lt:9, eq:5}); #{Column1}.filter.filter.setValue(''); #{Column3}.filter.filter.setValue(['']);"></Select>
                                                    <TriggerClick Handler="if (index == 0) 
                                                                                        { 
                                                                                            this.reset();
                                                                                            this.getTrigger(0).hide();
                                                                                        }
                                                                                        "/>
                                                </Listeners>
                                            </ext:ComboBox>
                                        </Items>
                                    </ext:FieldContainer>
                                    <ext:ToolbarSpacer />
                                    <ext:ToolbarFill />
                                </Items>
                            </ext:Toolbar>
                        </DockedItems>
                    </ext:FormPanel>
                    
                    <ext:GridPanel ID="GridPanel1" runat="server"
                            Title="Country List"
                            LockText="Bloquear"
                            UnlockText="Desbloquear"
                            MarginSpec="0 5 5 0"
                            SelectionMemory="false"
                            ForceFit="true"
                            Region="Center"
                            Border="False"
                            Frame="true"
                            EnableColumnHide="true">
                        <Store>
                            <ext:Store ID="Store2" runat="server" PageSize="10">
                                <Model>
                                    <ext:Model ID="Model2" runat="server" IDProperty="ID">
                                        <Fields>
                                            <ext:ModelField Name="ID" />
                                            <ext:ModelField Name="Country" />
                                            <ext:ModelField Name="Colour" />
                                            <ext:ModelField Name="Option1" />
                                            <ext:ModelField Name="Option2" />
                                        </Fields>
                                    </ext:Model>
                                </Model>
                            </ext:Store>
                        </Store>
    
                        <Plugins>
                            <ext:GridFilters ID="GridFilters1" runat="server" />
                        </Plugins>
    
                        <ColumnModel ID="ColumnModel1" runat="server">
                            <Columns>
                                <ext:Column ID="Column5" runat="server" Text="ID" Width="160" DataIndex="ID" >
                                    <Filter>
                                        <ext:NumberFilter DataIndex="ID" />
                                    </Filter>
                                </ext:Column>
    
                                <ext:Column ID="Column1" runat="server" Text="Country" Width="160" DataIndex="Country" Flex="1">
                                    <Filter>
                                        <ext:StringFilter DataIndex="Country" />
                                    </Filter>
                                </ext:Column>
    
                                <ext:Column ID="Column2" runat="server" Text="Flag's Colour" DataIndex="Colour" Flex="1" >
                                    <Filter>
                                        <ext:StringFilter DataIndex="Colour" />
                                    </Filter>
                                </ext:Column>
    
                                <ext:Column ID="Column3" runat="server" Text="Option 1" DataIndex="Option1" >
                                    <Renderer Handler="return (value == 'S' ? 'Si': 'No');" />
                                    <Filter>
                                        <ext:ListFilter Options="S,N" DataIndex="Option1" />
                                    </Filter>
                                </ext:Column>
    
                                <ext:Column ID="Column4" runat="server" Text="Option 2" DataIndex="Option2" >
                                        <Renderer Handler="return (value == 'S' ? 'Si': 'No');" />
                                        <Filter>
                                            <ext:ListFilter Options="S,N" DataIndex="Option2" />
                                        </Filter>
                                </ext:Column>
    
                            </Columns>
                        </ColumnModel>
    
                    </ext:GridPanel>
    
                </Items>
            </ext:Viewport>
        </form>
      </body>
    </html>
    A few days ago I asked in the forum how to clean the values entered in the filters, the answer I was given was right but it can only be applied to the defined filters, like the StringFilter.

    https://forums.ext.net/showthread.ph...for-GridFilter

    Now, I have anothe case where I have to clean a Numeric Filter, but it's giving me the following error:

    Click image for larger version. 

Name:	Number Filter.JPG 
Views:	25 
Size:	52.0 KB 
ID:	25101

    https://forums.ext.net/showthread.ph...-in-GridFilter

    I found the following information:

    https://www.sencha.com/forum/showthr...ogrammatically

    Thanks in advance!
    Last edited by fabricio.murta; Apr 13, 2018 at 5:20 PM. Reason: no feedback from the user in 7+ days
  2. #2
    Hello @opendat2000!

    I believe you have to, instead of

    #{Column5}.filter.filter.setValue({gt:2, lt:9, eq:5});
    If you do this

    var vals={gt:2, lt:9, eq:5}; for (op in vals) { #{Column5}.filter.filter[op].setValue(vals[op]); };
    Then it will work fine.

    But well, if you said "but why we can't just provide an object with the values at the same filter level than the others?" I would agree with you, that would be nice to have. But it will require a special treatment for that kind filter no matter what. Or perhaps you seen this usage in the Sencha documentation? If so, then that would be a bug. From browser debugged I didn't even see setValue() defined from the numeric filter's root at all.
    Fabrício Murta
    Developer & Support Expert
  3. #3
    Hello @Opendat2000!

    It's been some days now since we last replied you to this topic, and still no feedback from you. Do you still need assistance with this? We may mark this as closed if you do not reply in 7+ days from now, but you'll still be able to post a follow-up whenever you're able to.
    Fabrício Murta
    Developer & Support Expert

Similar Threads

  1. Replies: 8
    Last Post: Jun 05, 2016, 7:10 PM
  2. [CLOSED] Problems Decimal Numeric Field
    By opendat2000 in forum 2.x Legacy Premium Help
    Replies: 4
    Last Post: Apr 30, 2014, 2:02 PM
  3. [CLOSED] Numeric grid Filter, numeric field Decimal Places
    By RCM in forum 2.x Legacy Premium Help
    Replies: 6
    Last Post: Oct 10, 2013, 8:37 PM
  4. [CLOSED] Problems combining MultiHeader Filter & LockingGridView example
    By ljcorreia in forum 1.x Legacy Premium Help
    Replies: 2
    Last Post: Aug 08, 2012, 9:47 AM
  5. Replies: 0
    Last Post: Dec 04, 2011, 2:28 PM

Posting Permissions