[CLOSED] Stringfilter --> Filter on empty

  1. #1

    [CLOSED] Stringfilter --> Filter on empty

    Hi guys,

    Is it possible to give a stringfilter the option to filter on 'empty' ? (Null or '' )

    Martin
    Last edited by Daniil; Feb 07, 2014 at 11:45 AM. Reason: [CLOSED]
  2. #2
    Hi Martin,

    Sorry, Martin, I don't understand. Please elaborate.
  3. #3
    Quote Originally Posted by Daniil View Post
    Hi Martin,

    Sorry, Martin, I don't understand. Please elaborate.
    Sorry.. I would like to enable filtering on empty string. See following code. Through the stringfilter I want only to show the records without a company name:

    <%@ Page Language="C#" %>
    
    
    <%@ Import Namespace="System.Collections.ObjectModel" %>
    <%@ Import Namespace="System.Collections.Generic" %>
    
    
    <%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %>
    
    
    <script runat="server">
        List<object> goods = new List<object>
                    {
                        new
                        {
                            Id = 1 ,
                            Price = 71.72 ,
                            Company = "3m Co" ,
                            Date = new DateTime( 2007 , 9 , 1 ) ,
                            Size = "large" ,
                            Visible = true
                        } ,
                        new
                        {
                            Id = 2 ,
                            Price = 29.01 ,
                            Company = "" ,
                            Date = new DateTime( 2007 , 08 , 01 ) ,
                            Size = "medium" ,
                            Visible = false
                        } ,
                        new
                        {
                            Id = 3 ,
                            Price = 83.81 ,
                            Company = "Altria Group Inc" ,
                            Date = new DateTime( 2007 , 08 , 03 ) ,
                            Size = "large" ,
                            Visible = false
                        } ,
                        new
                        {
                            Id = 4 ,
                            Price = 52.55 ,
                            Company = "" ,
                            Date = new DateTime( 2008 , 01 , 04 ) ,
                            Size = "extra large" ,
                            Visible = true
                        } ,
                        new
                        {
                            Id = 5 ,
                            Price = 64.13 ,
                            Company = "" ,
                            Date = new DateTime( 2008 , 03 , 04 ) ,
                            Size = "small" ,
                            Visible = true
                        } ,
                        new
                        {
                            Id = 6 ,
                            Price = 31.61 ,
                            Company = "" ,
                            Date = new DateTime( 2008 , 02 , 01 ) ,
                            Size = "extra large" ,
                            Visible = false
                        } ,
                        new
                        {
                            Id = 7 ,
                            Price = 75.43 ,
                            Company = "Boeing Co." ,
                            Date = new DateTime( 2008 , 01 , 01 ) ,
                            Size = "large" ,
                            Visible = true
                        } ,
                        new
                        {
                            Id = 8 ,
                            Price = 67.27 ,
                            Company = "Caterpillar Inc." ,
                            Date = new DateTime( 2007 , 12 , 03 ) ,
                            Size = "medium" ,
                            Visible = true
                        } ,
                        new
                        {
                            Id = 9 ,
                            Price = 49.37 ,
                            Company = "Citigroup, Inc." ,
                            Date = new DateTime( 2007 , 11 , 24 ) ,
                            Size = "large" ,
                            Visible = true
                        } ,
                        new
                        {
                            Id = 10 ,
                            Price = 40.48 ,
                            Company = "E.I. du Pont de Nemours and Company" ,
                            Date = new DateTime( 2007 , 05 , 09 ) ,
                            Size = "extra large" ,
                            Visible = false
                        } ,
                        new
                        {
                            Id = 11 ,
                            Price = 68.1 ,
                            Company = "Exxon Mobile Corp" ,
                            Date = new DateTime( 2007 , 12 , 12 ) ,
                            Size = "large" ,
                            Visible = true
                        } ,
                        new
                        {
                            Id = 12 ,
                            Price = 34.14 ,
                            Company = "General Electric Company" ,
                            Date = new DateTime( 2008 , 06 , 16 ) ,
                            Size = "extra large" ,
                            Visible = true
                        } ,
                        new
                        {
                            Id = 13 ,
                            Price = 30.27 ,
                            Company = "General Motors Corporation" ,
                            Date = new DateTime( 2006 , 12 , 07 ) ,
                            Size = "medium" ,
                            Visible = true
                        } ,
                        new
                        {
                            Id = 14 ,
                            Price = 36.53 ,
                            Company = "Hewlett-Packard Co." ,
                            Date = new DateTime( 2007 , 05 , 13 ) ,
                            Size = "large" ,
                            Visible = true
                        } ,
                        new
                        {
                            Id = 15 ,
                            Price = 38.77 ,
                            Company = "Honweywell Intl Inc" ,
                            Date = new DateTime( 2006 , 11 , 07 ) ,
                            Size = "medium" ,
                            Visible = false
                        } ,
                        new
                        {
                            Id = 16 ,
                            Price = 19.88 ,
                            Company = "Intel Corporation" ,
                            Date = new DateTime( 2007 , 01 , 09 ) ,
                            Size = "small" ,
                            Visible = true
                        } ,
                        new
                        {
                            Id = 17 ,
                            Price = 81.41 ,
                            Company = "International Business Machines" ,
                            Date = new DateTime( 2005 , 01 , 21 ) ,
                            Size = "extra large" ,
                            Visible = true
                        } ,
                        new
                        {
                            Id = 18 ,
                            Price = 64.72 ,
                            Company = "Johnson & Johnson" ,
                            Date = new DateTime( 2008 , 01 , 10 ) ,
                            Size = "extra large" ,
                            Visible = true
                        } ,
                        new
                        {
                            Id = 19 ,
                            Price = 45.73 ,
                            Company = "JP Morgan & Chase & Co" ,
                            Date = new DateTime( 2008 , 02 , 20 ) ,
                            Size = "large" ,
                            Visible = false
                        } ,
                        new
                        {
                            Id = 20 ,
                            Price = 36.76 ,
                            Company = "McDonald's Corporation" ,
                            Date = new DateTime( 2007 , 06 , 12 ) ,
                            Size = "large" ,
                            Visible = true
                        } ,
                        new
                        {
                            Id = 21 ,
                            Price = 27.96 ,
                            Company = "Pfizer Inc" ,
                            Date = new DateTime( 2007 , 12 , 30 ) ,
                            Size = "small" ,
                            Visible = false
                        } ,
                        new
                        {
                            Id = 22 ,
                            Price = 45.07 ,
                            Company = "The Coca-Cola Company" ,
                            Date = new DateTime( 2007 , 01 , 30 ) ,
                            Size = "medium" ,
                            Visible = false
                        } ,
                        new
                        {
                            Id = 23 ,
                            Price = 34.64 ,
                            Company = "The Home Depot, Inc" ,
                            Date = new DateTime( 2006 , 12 , 31 ) ,
                            Size = "small" ,
                            Visible = true
                        } ,
                        new
                        {
                            Id = 24 ,
                            Price = 61.91 ,
                            Company = "The Procter & Gamble Company" ,
                            Date = new DateTime( 2007 , 04 , 08 ) ,
                            Size = "extra large" ,
                            Visible = true
                        } ,
                        new
                        {
                            Id = 25 ,
                            Price = 63.26 ,
                            Company = "United Technologies Corporation" ,
                            Date = new DateTime( 2006 , 06 , 04 ) ,
                            Size = "medium" ,
                            Visible = true
                        } ,
                        new
                        {
                            Id = 26 ,
                            Price = 35.57 ,
                            Company = "Verizon Communications" ,
                            Date = new DateTime( 2005 , 07 , 09 ) ,
                            Size = "small" ,
                            Visible = false
                        } ,
                        new
                        {
                            Id = 27 ,
                            Price = 45.45 ,
                            Company = "Wal-Mart Stores, Inc" ,
                            Date = new DateTime( 2006 , 09 , 09 ) ,
                            Size = "large" ,
                            Visible = true
                        }
                    };    
    
    
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!X.IsAjaxRequest)
            {
                this.Store1.DataSource = goods;
                this.Store1.DataBind();
            }
        }
        
        protected void SetFilter(object sender, DirectEventArgs e)
        {
            StringFilter sf = (StringFilter)GridFilters1.Filters[1];
            sf.SetValue("3m Co");
            sf.SetActive(true);
        }
    
    
    </script>
    
    
    <!DOCTYPE html>
        
    <html>
    <head runat="server">
        <title>GridPanel with Local Filtering, Sorting and Paging - Ext.NET Examples</title>
        <link href="/resources/css/examples.css" rel="stylesheet" />
    </head>
    <body>
        <ext:ResourceManager ID="ResourceManager1" runat="server" DirectEventUrl="default.aspx" />
        
        <h1>GridPanel with Local Filtering, Sorting and Paging</h1>
        
        <p>Please see column header menu for apllying filters</p>
        
        <ext:Store runat="server" ID="Store1" PageSize="10">
            <Model>
                <ext:Model runat="server" IDProperty="Id">
                    <Fields>
                        <ext:ModelField Name="Id" Type="Int" />
                        <ext:ModelField Name="Company" Type="String" />
                        <ext:ModelField Name="Price" Type="Float" />
                        <ext:ModelField Name="Date" Type="Date" DateFormat="yyyy-MM-ddTHH:mm:ss" />
                        <ext:ModelField Name="Size" Type="String" />
                        <ext:ModelField Name="Visible" Type="Boolean" />
                    </Fields>
                </ext:Model>
            </Model>
            <Sorters>
                <ext:DataSorter Property="Company" Direction="ASC" />
            </Sorters>        
        </ext:Store>
        
        <ext:Window 
            ID="Window1" 
            runat="server"         
            Width="700" 
            Height="400" 
            Closable="false"
            Collapsible="true"
            Title="Example" 
            Maximizable="true"
            Layout="Fit">
            <Items>
                <ext:GridPanel runat="server" Border="false" StoreID="Store1">
                    <ColumnModel runat="server">
                        <Columns>
                            <ext:Column runat="server" Text="ID" DataIndex="Id" />
                            <ext:Column runat="server" Text="Company" DataIndex="Company" />
                            <ext:Column runat="server" Text="Price" DataIndex="Price">
                                <Renderer Format="UsMoney" />
                            </ext:Column>
                            <ext:DateColumn runat="server" Text="Date" DataIndex="Date" Align="Center" Format="yyyy-MM-dd" />
                            <ext:Column runat="server" Text="Size" DataIndex="Size" />
                            <ext:Column runat="server" Text="Visible" DataIndex="Visible" Align="Center">
                                <Renderer Handler="return (value) ? 'Yes':'No';" />
                            </ext:Column>
                        </Columns>
                    </ColumnModel>
                    <Features>
                        <ext:GridFilters runat="server" ID="GridFilters1" Local="true">
                            <Filters>
                                <ext:NumericFilter DataIndex="Id" />
                                <ext:StringFilter DataIndex="Company" />
                                <ext:NumericFilter DataIndex="Price" />
                                <ext:DateFilter DataIndex="Date">
                                    <DatePickerOptions runat="server" TodayText="Now" />
                                </ext:DateFilter>
                                <ext:ListFilter DataIndex="Size" Options="extra small,small,medium,large,extra large" />
                                <ext:BooleanFilter DataIndex="Visible" />
                            </Filters>
                        </ext:GridFilters>
                    </Features>
                    <BottomBar>
                        <ext:PagingToolbar runat="server" HideRefresh="True">
                            <Items>
                                <ext:Button runat="server" Text="Find '3m Co'">
                                    <DirectEvents>
                                        <Click OnEvent="SetFilter" />
                                    </DirectEvents>
                                </ext:Button>
                                <ext:Button runat="server" Text="All Filters" ToolTip="Get Filters of Grid" Handler="var filters = Ext.encode(this.up('grid').filters.getFilterData()); Ext.Msg.alert('Filters', filters);" />
                                <ext:Button runat="server" Text="Clear Filters" Handler="this.up('grid').filters.clearFilters();" />
                            </Items>
                        </ext:PagingToolbar>
                    </BottomBar>                   
                </ext:GridPanel>
            </Items>
        </ext:Window>
    </body>
    </html>
    Can I achieve that ?

    Martin
  4. #4
    Thanks, got it.

    <ext:StringFilter DataIndex="Company">
        <ValidateRecord Fn="validateRecord" />
    </ext:StringFilter>
    <script>
        Ext.ux.grid.filter.StringFilter.override({
            isActivatable : function () {
                return Ext.isString(this.inputItem.getValue());
            }
        });
    
        var validateRecord = function(record) {
            var val = record.get(this.dataIndex),
                filterValue = this.getValue();
    
            if(typeof val != 'string') {
                return (filterValue.length === 0);
            }
    
            if (filterValue === "" && val.length > 0) {
                return false;
            }
    
            return val.toLowerCase().indexOf(this.getValue().toLowerCase()) > -1;
        };
    </script>
  5. #5
    Thanks Daniil

    Click image for larger version. 

Name:	fb-thumbs-up-like-button.jpg 
Views:	4 
Size:	4.3 KB 
ID:	7569
    Last edited by CarWise; Feb 07, 2014 at 9:02 AM.

Similar Threads

  1. [CLOSED] [#56] Grid StringFilter Icon missing IE7
    By cwolcott in forum 2.x Legacy Premium Help
    Replies: 10
    Last Post: Mar 05, 2013, 3:36 PM
  2. [CLOSED] StringFilter and DateFilter activate/deactivate
    By vadym.f in forum 1.x Legacy Premium Help
    Replies: 6
    Last Post: Jul 06, 2012, 3:58 PM
  3. [CLOSED] ext:StringFilter & Renderer on grid
    By peter.campbell in forum 1.x Legacy Premium Help
    Replies: 7
    Last Post: May 27, 2011, 10:37 AM
  4. Remote Filter always empty with DataContext
    By JIGSAW in forum 1.x Help
    Replies: 0
    Last Post: Feb 25, 2011, 12:38 PM
  5. [CLOSED] StringFilter in custom column
    By 78fede78 in forum 1.x Legacy Premium Help
    Replies: 6
    Last Post: Nov 04, 2010, 9:39 AM

Posting Permissions