[CLOSED] Filter TreeGrid from server side

  1. #1

    [CLOSED] Filter TreeGrid from server side

    Hi,

    We are facing a problem with server side filtering for TreeGrid. We need to filter a TreeGrid by reloading data into store. The store binding is working fine but the TreeGrid is not reloading.
    Urgent please.

    <%@ Page Language="C#" %>
    
    <%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %>
    <%@ Import Namespace="System.Collections.Generic" %>
    <%@ Import Namespace="System.Linq" %>
    <%@ Import Namespace="System" %>
    <%@ Import Namespace="System.Web" %>
    <%@ Import Namespace="System.Web.UI" %>
    <%@ Import Namespace="System.Web.UI.WebControls" %>
    <%@ Import Namespace="Ext.Net" %>
    <%@ Import Namespace="System.Text" %>
    <%@ Import Namespace="Newtonsoft.Json.Linq" %>
    <%@ Import Namespace="Newtonsoft.Json" %>
    <%@ Import Namespace="System.Data" %>
    
    
    
    
    <script runat="server">  
    
        public class AccountCode
        {
            public string Acc_ID { get; set; }
            public string Acc_Name_En { get; set; }
            public string Acc_Name_Ar { get; set; }
            public string Acc_Main_ID { get; set; }        
        } 
    
        public List<AccountCode> AccountCodesList()
        {
            List<AccountCode> AccountsDemo = new List<AccountCode>();
    
            AccountsDemo.Add(new AccountCode { Acc_ID = "1", Acc_Name_En = "AccountEn_1", Acc_Name_Ar = "AccountAr_1", Acc_Main_ID = "0" });
            AccountsDemo.Add(new AccountCode { Acc_ID = "2", Acc_Name_En = "AccountEn_2", Acc_Name_Ar = "AccountAr_2", Acc_Main_ID = "0" });
            AccountsDemo.Add(new AccountCode { Acc_ID = "3", Acc_Name_En = "AccountEn_3", Acc_Name_Ar = "AccountAr_3", Acc_Main_ID = "0" });
            AccountsDemo.Add(new AccountCode { Acc_ID = "4", Acc_Name_En = "test_4", Acc_Name_Ar = "AccountAr_4", Acc_Main_ID = "0" });
            AccountsDemo.Add(new AccountCode { Acc_ID = "5", Acc_Name_En = "AccountEn_5", Acc_Name_Ar = "AccountAr_5", Acc_Main_ID = "0" });
            
            AccountsDemo.Add(new AccountCode { Acc_ID = "101", Acc_Name_En = "test_101", Acc_Name_Ar = "AccountAr_101", Acc_Main_ID = "1" });
            AccountsDemo.Add(new AccountCode { Acc_ID = "102", Acc_Name_En = "code_102", Acc_Name_Ar = "AccountAr_102", Acc_Main_ID = "2" });
            AccountsDemo.Add(new AccountCode { Acc_ID = "501", Acc_Name_En = "test_501", Acc_Name_Ar = "AccountAr_501", Acc_Main_ID = "5" });
    
            AccountsDemo.Add(new AccountCode { Acc_ID = "10101", Acc_Name_En = "book_10101", Acc_Name_Ar = "AccountAr_10101", Acc_Main_ID = "101" });
            AccountsDemo.Add(new AccountCode { Acc_ID = "10102", Acc_Name_En = "boat_10102", Acc_Name_Ar = "AccountAr_10102", Acc_Main_ID = "101" });
            AccountsDemo.Add(new AccountCode { Acc_ID = "10103", Acc_Name_En = "sheep_10103", Acc_Name_Ar = "AccountAr_10103", Acc_Main_ID = "101" });
    
            AccountsDemo.Add(new AccountCode { Acc_ID = "50101", Acc_Name_En = "test_50101", Acc_Name_Ar = "AccountAr_50101", Acc_Main_ID = "501" });
            return AccountsDemo;
        }
    
        protected void Page_Load(object sender, EventArgs e)
        {
            this.wdwEditAccountCode.Hide();
            if (!X.IsAjaxRequest)
            {
                ResourceManager.GetInstance(this).RegisterIcon(Icon.Printer);            
                StoreDataBind();
            }
        }
    
        protected void StoreDataBind()
        {
            this.StoreDatabindGridAccountsCode();
        }
    
        protected void RefreshTreeGrid(object sender, DirectEventArgs e)
        {
            //this.Store_AccountsCode.Reload();
            //this.TreeGrid1.GetStore().Reload();
            //StoreDataBind();
        }
    
        protected void FilterTreeGrid(object sender, DirectEventArgs e)
        {
            //this.Store_AccountsCode.Reload();
            //this.TreeGrid1.GetStore().Reload();
            //this.TreeGrid1.Reload();
            StoreDatabindGridAccountsCodeFilter();
            //(this.TreeGrid1.Root.Primary as Node).Children.r
        }
    
        protected void StoreDatabindGridAccountsCodeFilter()
        {        
            var eAccount_Codes =
                from lineAccountCode in this.AccountCodesList()            
                where lineAccountCode.Acc_Name_En.Contains(txfAcc_Name_En.Text)  //lineAccountCode.Acc_Main_ID == "0"
                select lineAccountCode;
            if (eAccount_Codes.Count() != 0)
            {
                this.Store_AccountsCode.DataSource = eAccount_Codes.OrderBy(accCodes => accCodes.Acc_ID);
                this.Store_AccountsCode.DataBind();
    
            }
            else
            {
                this.Store_AccountsCode.DataBind();
            }
    
            Ext.Net.Node root = this.TreeGrid1.Root.Primary as Ext.Net.Node;
    
            List<AccountCode> accountsCode = eAccount_Codes.ToList();
    
            foreach (AccountCode acountItem in accountsCode)
            {
                Ext.Net.Node node = new Ext.Net.Node()
                {
                    Text = "test",
                    CustomAttributes = 
                        {
                            new ConfigItem("Acc_ID", acountItem.Acc_ID, ParameterMode.Value),
                            new ConfigItem("Acc_Name_En", acountItem.Acc_Name_En, ParameterMode.Value),
                            new ConfigItem("Acc_Name_Ar", acountItem.Acc_Name_Ar, ParameterMode.Value),                        
                            new ConfigItem("Acc_Main_ID", acountItem.Acc_Main_ID, ParameterMode.Value)
                        },
                    Expanded = true,
                    Expandable = true
                };
                node.NodeID = acountItem.Acc_ID.ToString();
                BuildChildrenNode(node);
                root.Children.Add(node);
    
            }
            //this.wdwEditAccountCode.Hide();
        }
        protected void BuildChildrenNode(Node node)
        {
            List<AccountCode> accountsCode2 = this.AccountCodesList().Where(accCode => accCode.Acc_ID == node.NodeID).ToList();
            if (accountsCode2 != null)
            {
                foreach (AccountCode acountItem2 in accountsCode2)
                {
                    Ext.Net.Node nodeItem = new Ext.Net.Node()
                    {
                        Text = "test",
                        CustomAttributes = 
                        {
                            new ConfigItem("Acc_ID", acountItem2.Acc_ID, ParameterMode.Value),
                            new ConfigItem("Acc_Name_En", acountItem2.Acc_Name_En, ParameterMode.Value),
                            new ConfigItem("Acc_Name_Ar", acountItem2.Acc_Name_Ar, ParameterMode.Value),                        
                            new ConfigItem("Acc_Main_ID", acountItem2.Acc_Main_ID, ParameterMode.Value)
                        },
                        Expanded = false,
                        Expandable = true
                    };
                    nodeItem.NodeID = acountItem2.Acc_ID.ToString();
                    //if (Manager_Account.GetAccountsCodeByMain_Acc_ID(nodeItem.NodeID, dataContext) == null)
                    //  nodeItem.Leaf = true;
                    BuildChildrenNode(nodeItem);
                    node.Children.Add(nodeItem);
                }
    
            }
            else
            {
                node.Leaf = true;
            }
    
            //return nodes.ToJson();
    
        }
    
    
    
        protected void StoreDatabindGridAccountsCode()
        {        
            var eAccount_Codes =
                from lineAccountCode in this.AccountCodesList()            
                where lineAccountCode.Acc_Main_ID == "0"
                select lineAccountCode;
            if (eAccount_Codes.Count() != 0)
            {
                if (!string.IsNullOrEmpty(txfAcc_Name_En.Text))
                {
                    eAccount_Codes = eAccount_Codes.Where(accCode => accCode.Acc_Name_En.Contains(txfAcc_Name_En.Text));
                }
    
                this.Store_AccountsCode.DataSource = eAccount_Codes.OrderBy(accCodes => accCodes.Acc_ID).ToList();
                this.Store_AccountsCode.DataBind();
    
            }
            else
            {
                this.Store_AccountsCode.DataBind();
            }
    
            Ext.Net.Node root = this.TreeGrid1.Root.Primary as Ext.Net.Node;
    
            List<AccountCode> accountsCode = eAccount_Codes.ToList();
    
            foreach (AccountCode acountItem in accountsCode)
            {
                Ext.Net.Node node = new Ext.Net.Node()
                {
                    Text = "test",
                    CustomAttributes = 
                        {
                            new ConfigItem("Acc_ID", acountItem.Acc_ID, ParameterMode.Value),
                            new ConfigItem("Acc_Name_En", acountItem.Acc_Name_En, ParameterMode.Value),
                            new ConfigItem("Acc_Name_Ar", acountItem.Acc_Name_Ar, ParameterMode.Value),                        
                            new ConfigItem("Acc_Main_ID", acountItem.Acc_Main_ID, ParameterMode.Value)
                        },
                    Expanded = false,
                    Expandable = true
                };
                node.NodeID = acountItem.Acc_ID.ToString();
                root.Children.Add(node);
                
            }        
            this.wdwEditAccountCode.Hide();
        }
        //Dynamic loading children nodes from client side
        [DirectMethod]
        public string NodeLoad(string nodeID)
        {
            NodeCollection nodes = new Ext.Net.NodeCollection();
    
            List<AccountCode> accountsCode2 = this.AccountCodesList().Where(accCode => accCode.Acc_Main_ID == nodeID).ToList();
            if (accountsCode2 != null)
            {
                foreach (AccountCode acountItem2 in accountsCode2)
                {
                    Ext.Net.Node nodeItem = new Ext.Net.Node()
                    {
                        Text = "test",
                        CustomAttributes = 
                        {
                            new ConfigItem("Acc_ID", acountItem2.Acc_ID, ParameterMode.Value),
                            new ConfigItem("Acc_Name_En", acountItem2.Acc_Name_En, ParameterMode.Value),
                            new ConfigItem("Acc_Name_Ar", acountItem2.Acc_Name_Ar, ParameterMode.Value),                        
                            new ConfigItem("Acc_Main_ID", acountItem2.Acc_Main_ID, ParameterMode.Value)
                        },
                        Expanded = false,
                        Expandable = true
                    };
                    nodeItem.NodeID = acountItem2.Acc_ID.ToString();
                    if ((this.AccountCodesList().Where(accCode => accCode.Acc_Main_ID == nodeItem.NodeID)).Count() == 0)
                        nodeItem.Leaf = true;
                    //BuildNode(nodeItem);
                    nodes.Add(nodeItem);
                }
    
            }
            else
            {
                //nodes. .Leaf = true;
            }
            return nodes.ToJson();
        }
        
    </script>
    <!DOCTYPE html>
    <html>
    <head id="Head1" runat="server">
        <title>Codes Example</title>
        <ext:XScript ID="XScript1" runat="server">
            <script type="text/javascript">
                var showNode = function (gridPanel, record, item, index, e, eOpts) {            
                    //if (cellIndex != 5)
                    {
                        #{pnlEditAccCode}.getLoader().url = 'Account_Codes_Add.aspx?accID='+record.get('Acc_ID');                
                        #{pnlEditAccCode}.getLoader().load();
                        #{wdwEditAccountCode}.show();
                    }
                }
    
                //Dynamic nodes loading
                var nodeLoad = function (store, operation, options) {
                    var node = operation.node;
    
                    App.direct.NodeLoad(node.getId(), {
                        success : function (result) {
                            node.set('loading', false);
                            node.set('loaded', true);
                            var data = Ext.decode(result);
                            node.appendChild(data, undefined, true);
                            node.expand();                    
                        },
    
                        failure : function (errorMsg) {
                            Ext.Msg.alert('Failure', errorMsg);
                        }
                    });
    
                    return false;
                };
    
                var prepareDeleteCommand = function (grid, command, record, row, col, value) {                
                    
                    if((record.data.Acc_ID).length > 5 )
                        command.iconCls = "icon-printer"; 
                }; 
    
                //print journal account code
                var showNewWindow = function (grid, commandName, record, row, column, value)  {
                       #{wdwEditAccountCode}.hide();
                       var AccID = record.get('Acc_ID');                               
                       var Name  = record.get('Acc_Name_En');
                       var ParentID = record.get('Parent_ID');                  
                       var YearID = #{cbxYear}.getValue();
                       var command = commandName;             
                       if((record.data.Acc_ID).length > 5 )
                            window.open('Reports_Statement.asp?Acc_ID=' + AccID + '&Acc_Year_ID=' + YearID);
                       else
                            window.open('Reports_TrialStatment.asp?Acc_ID=' + AccID + '&Acc_Year_ID=' + YearID);
                       
                              
                   }
    
            </script>
        </ext:XScript>
    </head>
    <body>
        <ext:ResourceManager ID="ResourceManager1" runat="server" />
        
          <ext:Viewport ID="Viewport1" runat="server" Layout="border">
            <Bin>
                <ext:Store ID="Store_AccountsCode" runat="server">
                    <Model>
                        <ext:Model ID="Model1" IDProperty="Acc_ID" runat="server">
                            <Fields>
                                <ext:ModelField Name="ID" />
                                <ext:ModelField Name="Acc_ID" />
                                <ext:ModelField Name="Acc_Name" />
                                <ext:ModelField Name="Acc_Name_En" />
                                <ext:ModelField Name="Acc_Name_Ar" />
                                <ext:ModelField Name="IsMain" />
                                <ext:ModelField Name="Parent_ID" />
                                <ext:ModelField Name="Old_Parent_Code" />
                                <ext:ModelField Name="Acc_Main_ID" />
                            </Fields>
                        </ext:Model>
                    </Model>
                </ext:Store>
            </Bin>
            <Items>
                <ext:TreePanel ID="TreeGrid1" Region="Center" runat="server" Header="false" Layout="FitLayout"
                    NoLeafIcon="false" UseArrows="true" RootVisible="false" AutoScroll="true" EnableDD="false">
                    <Fields>
                        <ext:ModelField Name="Acc_ID" />
                        <ext:ModelField Name="Acc_Name_En" />
                        <ext:ModelField Name="Acc_Name_Ar" />
                        <ext:ModelField Name="Parent_ID" />
                        <ext:ModelField Name="Acc_Main_ID" />
                    </Fields>
                    
                    <ColumnModel>
                        <Columns>
                            <ext:TreeColumn ID="TreeColumn1" runat="server" Text=" Acc_Acc_ID " Width="150"
                                DataIndex="Acc_ID">
                            </ext:TreeColumn>
                            <ext:Column ID="Column1" runat="server" Text=" Acc_Acc_Name_En "
                                Width="250" DataIndex="Acc_Name_En" Align="Left" SortType="AsText">
                                <HeaderItems>
                                    <ext:TextField runat="server" ID="txfAcc_Name_En" DataIndex="Acc_Name_En" EnableKeyEvents="true">
                                        <DirectEvents>
                                            <SpecialKey Before="if (e.getKey() == 13) return true;" OnEvent="FilterTreeGrid" />
                                        </DirectEvents>
                                    </ext:TextField>
                                </HeaderItems>
                            </ext:Column>
                            <ext:Column ID="Column2" runat="server" Text=" Acc_Acc_Name_Ar "
                                Width="250" DataIndex="Acc_Name_Ar" Align="Right" />
                            <ext:Column ID="Parent_IDCOl" runat="server" Text=" Acc_Parent_ID "
                                Width="250" DataIndex="Parent_ID" />
                            <ext:Column ID="Column3" runat="server" Text=" Acc_Acc_Main_ID "
                                Width="150" DataIndex="Acc_Main_ID" />
                            <ext:ImageCommandColumn ID="ImageCommandColumn1" runat="server" Align="Center" Width="30">
                                <Commands>
                                    <ext:ImageCommand Icon="PrinterKey" CommandName="print" />
                                </Commands>
                                <PrepareCommand Fn="prepareDeleteCommand" />
                                <Listeners>
                                    <Command Fn="showNewWindow" />
                                </Listeners>
                            </ext:ImageCommandColumn>
                        </Columns>
                    </ColumnModel>
                    <Root>                    
                        <ext:Node NodeID="MainTreeNode" Text="Tasks" >
                        </ext:Node>
                    </Root>
                    <Listeners>
                        <BeforeLoad Fn="nodeLoad" />                    
                        <ItemClick Fn="showNode" />
                    </Listeners>
                </ext:TreePanel>
            </Items>
        </ext:Viewport>
        <ext:Window runat="server" ID="wdwEditAccountCode" Title="Edit Account Code" Hidden="false"
            Layout="FitLayout" ActiveIndex="0" Closable="true" Icon="MoneyDollar" Maximizable="false"
            Modal="true" Width="640" Height="290">
            <Items>
                <ext:Panel runat="server" ID="pnlEditAccCode">
                    <Loader ID="Loader1" Mode="Frame" runat="server">
                        <LoadMask Msg="Loading Account..." ShowMask="true" />
                    </Loader>
                </ext:Panel>
            </Items>
            <DirectEvents>
                <%--<Hide OnEvent="RefreshTreeGrid">
                    <EventMask Msg="Refreshing..." ShowMask="true" />
                </Hide>--%>
            </DirectEvents>
        </ext:Window>
    </body>
    </html>
    Last edited by geoffrey.mcgill; Sep 29, 2012 at 2:09 AM. Reason: [CLOSED]
  2. #2
    Hi,

    I would try to call
    TreeGrid1.Render();
    after population with filtered nodes.

    It should cause the changes to be applied.
    Last edited by geoffrey.mcgill; Sep 29, 2012 at 2:09 AM.

Similar Threads

  1. Replies: 3
    Last Post: Dec 26, 2011, 1:32 PM
  2. [CLOSED] Server side filter the store
    By leon_tang in forum 1.x Legacy Premium Help
    Replies: 6
    Last Post: Sep 26, 2011, 10:30 AM
  3. [CLOSED] Server-side filter, using Header filters
    By rthiney in forum 1.x Legacy Premium Help
    Replies: 8
    Last Post: Aug 11, 2011, 5:01 PM
  4. Replies: 1
    Last Post: Dec 01, 2010, 5:14 PM
  5. Replies: 4
    Last Post: Mar 19, 2010, 11:35 AM

Tags for this Thread

Posting Permissions