Sep 27, 2012, 8:12 AM
[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.
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]