Ext.Net 1.2.0_Ext.Net.TreePanel 勾选“纠结”发送给服务器端的方法
本文内容
- 演示 TreePanel 勾选通过 DirectMethods 发送给服务器端方法
- 说明
- 修改记录
演示 TreePanel 勾选通过 DirectMethods 发送给服务器端方法
本文演示 Ext.Net 通过前台脚本操作页面后,如何将数据“直接”发送给服务器端方法,从而摆脱之前 ASP.NET 时代(非 Ajax)的思维模式。
<%@ Page Language="C#" %>
<%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %>
<%@ Register Assembly="Ext.Net.Utilities" Namespace="Ext.Net.Utilities" TagPrefix="ext" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Collections" %>
4: if (!X.IsAjaxRequest)
5: {
6: this.BindTreePanel(this.TreePanel1.Root);
7: }
8: }
9: [DirectMethod]
10: public string GetSelectedNodes(string nodes)
11: {
12: // TODO
13: return nodes;
14: }
15: private void BindTreePanel(Ext.Net.TreeNodeCollection nodes)
16: {
17: DataTable dataSource = ExtNetInteractive.DS.GetDataSource();
18:
19: Ext.Net.TreeNode root = new Ext.Net.TreeNode();
20: root.NodeID = "0";
21: root.Text = "Root";
22:
23: if (!dataSource.IsNull() && dataSource.Rows.Count > 0)
24: {
25: DataRow[] items = dataSource.Select("parentid='-1'");
26: if (items.Length > 0)
27: {
28: DataSet ds = new DataSet();
29: ds.Merge(items);
30: DataTable SourseTable = ds.Tables[0];
31:
32: for (int i = 0; i < SourseTable.Rows.Count; i++)
33: {
34: Ext.Net.TreeNode node = new Ext.Net.TreeNode();
35: node.NodeID = SourseTable.Rows[i]["id"].ToString();
36: node.Text = SourseTable.Rows[i]["name"].ToString();
37: node.Checked = Ext.Net.ThreeStateBool.False;
38: DataRow[] hasChild = dataSource.Select("parentid='" + SourseTable.Rows[i]["id"].ToString() + "'");
39: if (hasChild.Length > 0) node.Icon = Icon.FolderGo;
40: else node.Icon = Icon.Table;
41: if (hasChild.Length <= 0) node.Leaf = true;
42: else node.Leaf = false;
43:
44: root.Nodes.Add(node);
45: BindTreePanel(node.Nodes, dataSource, SourseTable.Rows[i]["id"].ToString());
46: }
47: }
48: }
49: nodes.Add(root);
50: }
51: private void BindTreePanel(Ext.Net.TreeNodeCollection nodes, DataTable allData, string parentID)
52: {
53: DataRow[] items = allData.Select("parentid='" + parentID + "'");
54:
55: if (items.Length > 0)
56: {
57: DataSet ds = new DataSet();
58: ds.Merge(items);
59: DataTable dt = ds.Tables[0];
60: for (int i = 0; i < dt.Rows.Count; i++)
61: {
62: Ext.Net.TreeNode node = new Ext.Net.TreeNode();
63: node.NodeID = dt.Rows[i]["id"].ToString();
64: node.Text = dt.Rows[i]["name"].ToString();
65: node.Checked = Ext.Net.ThreeStateBool.False;
66: DataRow[] hasChild = allData.Select("parentid='" + dt.Rows[i]["id"].ToString() + "'");
67: if (hasChild.Length > 0) node.Icon = Icon.FolderGo;
68: else node.Icon = Icon.Table;
69: if (hasChild.Length <= 0) node.Leaf = true;
70: else node.Leaf = false;
71:
72: nodes.Add(node);
73: BindTreePanel(node.Nodes, allData, dt.Rows[i]["id"].ToString());
74: }
75: }
76: }
77:
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?
立即登录/注册


微信扫码登录