Asp.net结合Extjs实现一次加载整个树和动态加载树
2010-12-10 16:16
381 查看
实现一次加载和点击节点后动态加载树。废话不多说,直接上代码。
数据库表:(Oracle)
主页面添加对Extjs中几个Js引用就不啰嗦了,关键代码:
数据请求TempPage.aspx页面:
后台DComOrg.cs文件:
Model:
DBHelper类:
OK,数据插入数据库,修改数据连接直接运行!
数据库表:(Oracle)
create table ComOrg ( ComOrg_ID integer primary key, ComOrg_Name nvarchar2(20) not null, ComOrg_ParentId integer not null ); insert into ComOrg (ComOrg_ID,Comorg_Name,Comorg_Parentid) values (1,'MyCompany',0); insert into ComOrg (ComOrg_ID,Comorg_Name,Comorg_Parentid) values (2,'第一事业部',1); insert into ComOrg (ComOrg_ID,Comorg_Name,Comorg_Parentid) values (3,'第三事业部',1); insert into ComOrg (ComOrg_ID,Comorg_Name,Comorg_Parentid) values (4,'第七事业部',1); insert into ComOrg (ComOrg_ID,Comorg_Name,Comorg_Parentid) values (5,'编辑部',4); insert into ComOrg (ComOrg_ID,Comorg_Name,Comorg_Parentid) values (6,'多媒体事业部',4); insert into ComOrg (ComOrg_ID,Comorg_Name,Comorg_Parentid) values (7,'广州分公司',1); insert into ComOrg (ComOrg_ID,Comorg_Name,Comorg_Parentid) values (8,'上海分公司',1); insert into ComOrg (ComOrg_ID,Comorg_Name,Comorg_Parentid) values (9,'武汉分公司',1); insert into ComOrg (ComOrg_ID,Comorg_Name,Comorg_Parentid) values (10,'中国移动广州分公司',0); insert into ComOrg (ComOrg_ID,Comorg_Name,Comorg_Parentid) values (11,'采编',5); insert into ComOrg (ComOrg_ID,Comorg_Name,Comorg_Parentid) values (12,'创作部',2); commit;
主页面添加对Extjs中几个Js引用就不啰嗦了,关键代码:
<mce:script type="text/javascript" language="javascript"><!-- Ext.onReady(function(){ // 一次加载所有节点 var tree = new Ext.tree.TreePanel({ renderTo: "tree-div", useArrows: true, autoScroll: true, animate: true, enableDD: true, containerScroll: true, border: false, // auto create TreeLoader dataUrl: 'TempPage.aspx?tree=ss', root: { nodeType: 'async', text: '公司架构', draggable: false, id: '-1' }, listeners: { click: function(n){ Ext.Msg.alert("Click Message","You clicked: "+n.attributes.text+" NO. "+n.attributes.id); } } }); tree.getRootNode().expand(); //动态加载节点 var treeLoader = new Ext.tree.TreeLoader({dataUrl: ""}); var treeexpend = new Ext.tree.TreePanel({ renderTo: "treeExpend", useArrows: true, autoScroll: true, animate: true, enableDD: false,//不允许拖动 containerScroll: true, border: false, loader: treeLoader, root: { nodeType: 'async', text: '公司架构', draggable: false, expended: true, id: '0' }, listeners: { click: function(n){ //Ext.Msg.alert("Click Message","You clicked: "+n.attributes.text+" NO. "+n.attributes.id); var div = Ext.get("divTest"); div.highlight(); Ext.MessageBox.show({ title: "MessageBoxDemo", msg: "You clicked: "+n.attributes.text+" NO. "+n.attributes.id, width: 400, buttons: Ext.MessageBox.OK }); } } }); treeexpend.on('beforeload', function(node){ treeexpend.loader.dataUrl="TempPage.aspx?parId="+node.id; //定义子节点的Loader }); //treeexpend.getRootNode().expand(); }); // --></mce:script> <br /> Load All: <br /> <div id="tree-div" style="margin:5px 0px 0px 5px;" mce_style="margin:5px 0px 0px 5px;"></div><br /> Async Load: <br /> <div id="treeExpend" style="margin:5px 0px 0px 5px;" mce_style="margin:5px 0px 0px 5px;"></div>
数据请求TempPage.aspx页面:
protected void Page_Load(object sender, EventArgs e) { if(Request["tree"] != null) { Tree(); } else if(Request["parId"] != null) { TreeByParentId(); } } public void Tree() { List<ComOrg> list = GetForTree(DComOrg.GetList(),0); string json = JsonConvert.SerializeObject(list); Response.Write(json.Replace("ComOrg_Name", "text").Replace("ComOrg_ID", "id").ToLower()); Response.End(); } /// <summary> /// 根据指定节点获取所有子节点 /// </summary> /// <param name="list"></param> /// <param name="parentId"></param> /// <returns></returns> public List<ComOrg> GetForTree(List<ComOrg> list,int parentId) { List<ComOrg> tempList = new List<ComOrg>(); foreach(ComOrg co in list) { if(co.ComOrg_ParentId == parentId) { co.Children = GetForTree(list, co.ComOrg_ID); tempList.Add(co); continue; } } return tempList; } public void TreeByParentId() { int parentId = Convert.ToInt32(Request["parId"]); List<ComOrg> list = DComOrg.GetListByParentId(parentId); string json = JsonConvert.SerializeObject(list); Response.Write(json.Replace("ComOrg_Name", "text").Replace("ComOrg_ID", "id").ToLower()); Response.End(); }
后台DComOrg.cs文件:
using Oracle.DataAccess.Client; public static List<ComOrg> GetList() { List<ComOrg> list = null; StringBuilder strSql = new StringBuilder(); strSql.Append("SELECT COMORG_ID,COMORG_NAME,COMORG_PARENTID FROM COMORG"); OracleDataReader reader = DBHelper.GetDataReader(strSql.ToString(), CommandType.Text); if(reader != null) { list = new List<ComOrg>(); ComOrg co = null; while(reader.Read()) { co = new ComOrg(); co.ComOrg_ID = Convert.ToInt32(reader["ComOrg_ID"].ToString()); co.ComOrg_Name = reader["ComOrg_Name"].ToString(); co.ComOrg_ParentId = Convert.ToInt32(reader["ComOrg_ParentId"]); co.Cls = "folder"; list.Add(co); } } reader.Close(); reader.Dispose(); return list; } public static List<ComOrg> GetListByParentId(int parentId) { List<ComOrg> list = null; StringBuilder strSql = new StringBuilder(); strSql.Append("SELECT COMORG_ID,COMORG_NAME,COMORG_PARENTID FROM COMORG WHERE COMORG_PARENTID=:COMORG_PARENTID"); OracleParameter[] param = { new OracleParameter("@COMORG_PARENTID", OracleDbType.Int32, 4) }; param[0].Value = parentId.ToString(); OracleDataReader reader = DBHelper.GetDataReader(strSql.ToString(), CommandType.Text,param); if(reader != null) { list = new List<ComOrg>(); ComOrg co = null; while(reader.Read()) { co = new ComOrg(); co.ComOrg_ID = Convert.ToInt32(reader["ComOrg_ID"].ToString()); co.ComOrg_Name = reader["ComOrg_Name"].ToString(); co.ComOrg_ParentId = Convert.ToInt32(reader["ComOrg_ParentId"]); co.Cls = "folder"; list.Add(co); } } reader.Close(); reader.Dispose(); return list; }
Model:
using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.Collections.Generic; using Newtonsoft.Json; /// <summary> /// ComOrg 的摘要说明 /// </summary> public class ComOrg { public ComOrg() { // // TODO: 在此处添加构造函数逻辑 // } private int comOrg_ID; public int ComOrg_ID { get { return comOrg_ID; } set { comOrg_ID = value; } } private string comOrg_Name; public string ComOrg_Name { get { return comOrg_Name; } set { comOrg_Name = value; } } private int comOrg_ParentId; [JsonIgnore] public int ComOrg_ParentId { get { return comOrg_ParentId; } set { comOrg_ParentId = value; } } private string _cls; public string Cls { get { return _cls; } set { _cls = value; } } private List<ComOrg> children; public List<ComOrg> Children { get { return children; } set { children = value; } } }
DBHelper类:
using Oracle.DataAccess.Client; public static String ConnectionString = "Data Source=orcl;User ID=hr;Password=hr;"; /// <summary> /// 获取DataReader对象 /// </summary> /// <param name="queryString">T-SQL语句</param> /// <param name="commandType">命令类型</param> /// <param name="param">T-SQL参数</param> /// <returns>DataReader对象</returns> public static OracleDataReader GetDataReader(string queryString, CommandType commandType, params OracleParameter[] param) { OracleDataReader dataReader = null; OracleConnection con = new OracleConnection(ConnectionString); OracleCommand command = new OracleCommand(queryString, con); command.CommandType = commandType; if(param != null) { for(int i = 0; i < param.Length; i++) { command.Parameters.Add(param[i]); } } try { command.Connection.Open(); dataReader = command.ExecuteReader(CommandBehavior.CloseConnection); } catch(Exception ex) { throw ex; } return dataReader; }
OK,数据插入数据库,修改数据连接直接运行!
相关文章推荐
- ASP.NET中实现模版的动态加载
- ASP.NET中实现模版的动态加载
- asp.net中如何实现动态加载多个可视控件
- ASP.NET动态加载用户控件的实现方法
- Highcharts结合Asp.net实现动态数据股票式图形显示实例
- asp.net mvc + ExtJs 实现无限级TreePanel 加载、添加、编辑、删除
- ASP.NET中实现模版的动态加载
- asp.net中使用jquery实现动态加载新闻框
- asp.net ext treepanel 动态加载XML的实现方法
- ASP.NET中实现模版的动态加载
- ASP.NET中实现模版的动态加载
- ASP.NET中实现模版的动态加载
- ASP.NET通过使页面动态加载不同CSS实现多界面
- ASP.NET中实现模版的动态加载
- ASP.NET中实现模版的动态加载
- ASP.NET中实现模版的动态加载(1)
- ASP.NET动态加载用户控件的实现方法
- Extjs4.2 TreePanel+Asp.net mvc 动态加载节点
- ASP.NET中实现模版的动态加载
- ASP.NET动态加载用户控件的实现方法