<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="Web.WebForm1" %>
<span style="line-height: 1.5;"><%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %></span>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<script type="text/javascript">
var nodeLoad = function (store, operation, options) {
var node = operation.node;
App.direct.NodeLoad(node.getId(), {
success: function (result) {
if (result != null) {
node.set('loading', false);
node.set('loaded', true);
var data = Ext.decode(result);
node.appendChild(data, undefined, true);
node.expand();
}
else {
node.Leaf = true;
}
},
failure: function (errorMsg) {
// Ext.Msg.alert('Failure', errorMsg);
}
});
return false;
};
</script>
</head>
<body>
<form id="form1" runat="server">
<ext:ResourceManager ID="ResourceManager1" runat="server" />
<ext:Viewport ID="Viewport1" runat="server" Layout="BorderLayout">
<Items>
<ext:TreePanel ID="Panel" runat="server" Region="Center" RootVisible="false"
FolderSort="true" AutoScroll="true" Animate="true" Icon="ChartOrganisation">
<Fields>
<ext:ModelField Name="ID" />
<ext:ModelField Name="CODE" />
<ext:ModelField Name="TEXT" />
</Fields>
<ColumnModel>
<Columns>
<ext:TreeColumn ID="TreeColumn2" runat="server" Text="名称" Width="220" Sortable="true"
DataIndex="TEXT" />
<ext:Column ID="Column2" runat="server" Text="编码" Width="120" Sortable="true" DataIndex="CODE" />
</Columns>
</ColumnModel>
<Listeners>
<BeforeLoad Fn="nodeLoad" />
</Listeners>
</ext:TreePanel>
</Items>
</ext:Viewport>
</form>
</body>
</html>
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack && !X.IsAjaxRequest)
{
this.BuildTree(PanelRoot);
}
}
private Ext.Net.NodeCollection BuildTree(Ext.Net.NodeCollection nodes)
{
if (nodes == null)
{
nodes = new Ext.Net.NodeCollection();
}
DataTable dt = ac.Tree(); 得到一个DataTable
Ext.Net.Node root2 = new Ext.Net.Node()
{
Text = "Root",
NodeID = "1"
};
nodes.Add(root2);
Bind_Tvx(dt, root2);
dt.Dispose();
return nodes;
}
private void Bind_Tvx(DataTable dt, Ext.Net.Node pNode)
{
NodeCollection nodes = new Ext.Net.NodeCollection();
System.Data.DataView dv = new System.Data.DataView(dt);//将DataTable存到DataView中,以便于筛选数据
Ext.Net.Node tn;//建立TreeView的节点(TreeNode),以便将取出的数据添加到节点中
string filter = string.Format("parentid='{0}'", pNode.NodeID);
dv.RowFilter = filter;//利用DataView将数据进行筛选,选出相同 父id值 的数据
foreach (DataRowView drv in dv)
{
tn = new Ext.Net.Node();//建立一个新节点(学名叫:一个实例)
tn.NodeID = drv["ID"].ToString();//节点的Value值,一般为数据库的id值
tn.Text = drv["NOTETEXT"].ToString();//节点的Text,节点的文本显示
tn.CustomAttributes.Add(new ConfigItem("CODE", drv["CODE"].ToString(), ParameterMode.Value));
tn.CustomAttributes.Add(new ConfigItem("TEXT", drv["TEXT"].ToString(), ParameterMode.Value));
CheckLeaf(dt,tn);
pNode.Children.Add(tn);//将该节点加入到TreeNodeCollection(节点集合)中
}
}
private static void CheckLeaf(DataTable dt,Ext.Net.Node tn)
{
System.Data.DataView dv = new System.Data.DataView(dt);//将DataTable存到DataView中,以便于筛选数据
string filter = string.Format("parentid='{0}'", tn.NodeID);
dv.RowFilter = filter;//利用DataView将数据进行筛选,选出相同 父id值 的数据
if (dv.Count>0)
{
tn.Leaf = false;
}
else
{
tn.Leaf = true;
}
}
[DirectMethod]
public static string NodeLoad(string nodeID)
{
<span style="line-height: 1.5;">DataTable dt = ac.Tree(); 得到一个DataTable</span>
NodeCollection nodes= Bind_Tvx(dt, nodeID);
dt.Dispose();
return nodes.ToJson();
}
private static NodeCollection Bind_Tvx(DataTable dt, string nodeID)
{
NodeCollection nodes = new Ext.Net.NodeCollection();
System.Data.DataView dv = new System.Data.DataView(dt);//将DataTable存到DataView中,以便于筛选数据
Ext.Net.Node tn;//建立TreeView的节点(TreeNode),以便将取出的数据添加到节点中
string filter = string.Format("parentid='{0}'", nodeID);
dv.RowFilter = filter;//利用DataView将数据进行筛选,选出相同 父id值 的数据
foreach (DataRowView drv in dv)
{
tn = new Ext.Net.Node();//建立一个新节点(学名叫:一个实例)
tn.NodeID = drv["ID"].ToString();//节点的Value值,一般为数据库的id值
tn.Text = drv["TEXT"].ToString();//节点的Text,节点的文本显示
tn.CustomAttributes.Add(new ConfigItem("TITLE", drv["TEXT"].ToString(), ParameterMode.Value));
tn.CustomAttributes.Add(new ConfigItem("CODE", drv["CODE"].ToString(), ParameterMode.Value));
CheckLeaf(dt, tn);
nodes.Add(tn);//将该节点加入到TreeNodeCollection(节点集合)中
}
return nodes;
}
}
}