EXT.NET(二)Dropdownlist结合TreePanel

今天在学习布局的过程中,有个申请部门。就想到Dropdownlist+TreePanel,看DEMO有这样的,但是后台如何搞呢?

请教DB后终于搞定了。

前台:

<ext:DropDownField ID="ddldepartment" runat="server" Editable="false" FieldLabel="申请单位" AnchorHorizontal="100%" > <Component> <ext:TreePanel ID="TreePanel1" runat="server" Icon="ApplicationHome" Height="300" Shadow="None" UseArrows="true" AutoScroll="true" Animate="true" EnableDD="true" ContainerScroll="true" RootVisible="false"> <Buttons> <ext:Button ID="btnclose" runat="server" Text="关闭"> <Listeners> <Click Handler="#{ddldepartment}.collapse();" /> </Listeners> </ext:Button> </Buttons> <Root> </Root> <Listeners> <CheckChange Handler="this.dropDownField.setValue(getTasks(this), false);" /> </Listeners> </ext:TreePanel> </Component> <Listeners> <Expand Handler="this.component.getRootNode().expand(true);" Single="true" Delay="10" /> </Listeners> </ext:DropDownField>


后台:

protected void Page_Load(object sender, EventArgs e) { if (!X.IsAjaxRequest) { string strsql = "select * from Framework"; DABaseAccess db = new DABaseAccess("OA"); DataTable dt = new DataTable(); dt = db.Query(strsql.ToString()); if (dt.Rows.Count > 0) { this.BuildTree(this.TreePanel1.Root, dt); } else { JScript.Alert("没有取得数据", this.Page); } } } /// <summary> /// TreePanel /// </summary> /// <param name="allData"></param> /// <returns></returns> public TreeNode BindTreePanel(DataTable allData) { TreeNode topNode = new TreeNode(); topNode.NodeID = "0"; topNode.Text = "Root"; if (allData != null && allData.Rows.Count > 0) { DataRow[] items = allData.Select("FParentID=-1"); if (items != null && items.Length > 0) { DataSet ds = new DataSet(); ds.Merge(items); DataTable SourseTable = ds.Tables[0]; for (int i = 0; i < SourseTable.Rows.Count; i++) { TreeNode Tvn = new TreeNode(); Tvn.Expandable = ThreeStateBool.True; Tvn.NodeID = SourseTable.Rows[i]["FID"].ToString(); Tvn.Text = SourseTable.Rows[i]["FNAME"].ToString(); DataRow[] isChildNode = allData.Select("fparentid=" + SourseTable.Rows[i]["FID"].ToString()); if (isChildNode.Length <= 0) { Tvn.Leaf = true; Tvn.Checked = Ext.Net.ThreeStateBool.False; } if (isChildNode.Length > 0) Tvn.Icon = Icon.FolderGo; else Tvn.Icon = Icon.Table; BindSubTreePanel(Tvn, allData, SourseTable.Rows[i]["FID"].ToString()); topNode.Nodes.Add(Tvn); } } } return topNode; } private void BindSubTreePanel(TreeNode TrNode, DataTable allData, string parentID) { DataRow[] items = allData.Select("FParentID=" + parentID); if (items != null && items.Length > 0) { DataSet ds = new DataSet(); ds.Merge(items); DataTable dt = ds.Tables[0]; for (int i = 0; i < dt.Rows.Count; i++) { TreeNode Tvn = new TreeNode(); Tvn.Icon = Icon.Note; Tvn.NodeID = dt.Rows[i]["FID"].ToString(); Tvn.Text = dt.Rows[i]["FNAME"].ToString(); DataRow[] isChildNode = allData.Select("fparentid=" + dt.Rows[i]["FID"].ToString()); if (isChildNode.Length <= 0) { Tvn.Leaf = true; Tvn.Checked = Ext.Net.ThreeStateBool.False; } if (isChildNode.Length > 0) Tvn.Icon = Icon.FolderGo; else Tvn.Icon = Icon.Table; BindSubTreePanel(Tvn, allData, dt.Rows[i]["FID"].ToString()); TrNode.Nodes.Add(Tvn); } } } private Ext.Net.TreeNodeCollection BuildTree(Ext.Net.TreeNodeCollection root, DataTable dt) { root.Add(this.BindTreePanel(dt)); return root; }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值