ASP.net MVC、Extjs多级目录(理论上可以无限级、非递归)treepanel显示和数据库(多级目录)存储结构的设计(下篇)
2010-10-09 11:24
1166 查看
[b]1、添加节点、子节点、编辑节点[/b]
1.1、添加节点1.2、添加子节点
[b]2、移动节点或者目录[/b]
[b]3、删除目录和节点[/b]
其中,遍历的情况有2种。
通过后台获取的(这里是一次性获取)节点,在该树的attributes内。
从前台操作增加的节点,在childNodes内。
这里遍历的代码片段:
]4、节点操作代码片段 //节点的操作 [AcceptVerbs(HttpVerbs.Post)] public ActionResult operation() { if(Request.Form["operation"]=="append") { using (TreeBuildDataContext tem_db = new TreeBuildDataContext()) { tem_db.ExecuteCommand("update treestruct set tre_parent={0} where tre_children={1}", Request.Form["m1"], Request.Form["m2"]); } } else if (Request.Form["operation"] == "above" || Request.Form["operation"]=="below") { using (TreeBuildDataContext tem_db = new TreeBuildDataContext()) { var tem_parent = tem_db.treestruct.Where(p => p.tre_children == int.Parse(Request.Form["m1"])).ToList(); var tem_children = tem_db.treestruct.Where(p => p.tre_children == int.Parse(Request.Form["m2"])).ToList(); if (tem_parent[0].tre_parent != tem_children[0].tre_parent)//不在同一目录下 { tem_db.ExecuteCommand("update treestruct set tre_parent={0} where tre_children={1};",tem_parent[0].tre_parent, tem_children[0].tre_children); } } } else if (Request.Form["operation"] == "update") { using (TreeBuildDataContext tem_db = new TreeBuildDataContext()) { tem_db.ExecuteCommand("update treetable set tre_name={0} where tre_id={1};", Request.Form["m2"], Request.Form["m1"]); } } else if (Request.Form["operation"] == "addborther" || Request.Form["operation"] == "addchildren") { using (TreeBuildDataContext tem_db = new TreeBuildDataContext()) { tem_db.ExecuteCommand("insert into treetable values({0},'新建节点')", Request.Form["m2"]); tem_db.ExecuteCommand("insert into treestruct values({0},{1})", Request.Form["m1"], Request.Form["m2"]); } } else if (Request.Form["operation"] =="delete") { using (TreeBuildDataContext tem_db = new TreeBuildDataContext()) { List<int> L = JsonHelper.Jso_DeJSON<List<int>>(Request.Form["m1"]); var tem_struct = from a in tem_db.treestruct orderby a.tre_parent ascending where L.Contains(a.tre_children) select a; var tem_table = from b in tem_db.treetable orderby b.tre_id ascending where L.Contains(b.tre_id) select b; tem_db.treestruct.DeleteAllOnSubmit(tem_struct); tem_db.treetable.DeleteAllOnSubmit(tem_table); tem_db.SubmitChanges(); } } return null; } //获取现在所要增加节点的id [AcceptVerbs(HttpVerbs.Get)] public ActionResult Getid() { using (TreeBuildDataContext tem_db = new TreeBuildDataContext()) { var p = (from q in tem_db.treetable select q.tre_id).Max()+1; Response.Write("{success:true,tre_id:\""+p+"\"}"); } Response.End(); Response.Clear(); return null; }
[b]5、总结:[/b]
1、在假期特别多的这段时间里懒惰了挺长时间的。2、主要学会了一些前台遍历的方法。
3、在上篇中的园友建议中,懂得了很多方法和其用法、构造方法并不是很好。
4、算法方面的能力得加强,毕竟有些算法在这一领域上已经用了几十年,思想的浓缩才是学习的精华。
6、以下是相关配置和使用的环境:
win7系统vs2008 sp1
SQL2005
.NET FrameWork3.5
extjs3.2版本
[b]7、下载相关[/b]
因为源代码没有加入Extjs所以这部分添加麻烦读者自己到它们的官方网站下载了。Extjs官方下载包:http://www.sencha.com/products/js/
源代码下载包:http://files.cnblogs.com/yongfeng/TreePanel_Last.rar
相关文章推荐
- ASP.net MVC、Extjs多级目录(理论上可以无限级、非递归)treepanel显示和数据库(多级目录)存储结构的设计(上篇)
- asp.net mvc 多级目录结构
- asp.net mvc 多级目录结构
- asp.net mvc多级目录结构和多级area实现技巧
- Extjs4.2 TreePanel+Asp.net mvc 动态加载节点
- asp.net mvc 多级目录结构
- asp.net mvc + ExtJs 实现无限级TreePanel 加载、添加、编辑、删除
- 使用 ExtJS TreePanel 从 ASP.NET AJAX Web Service 获取、绑定和显示树
- asp.net mvc 多级目录结构
- Asp.net 中图片存储数据库以及页面读取显示通用方法详解-附源码下载
- ASP.NET MVC快速开发框架清新简洁界面设计,有兴趣可以模仿参考
- 【小技巧】自定义asp.net mvc的WebFormViewEngine修改默认的目录结构
- ASP.NET MVC 入门2、项目的目录结构与核心的DLL
- ASP无限级分类原理、数据库结构设计、应用及相关函数
- 自定义asp.net mvc 3目录结构
- Asp.net 2.0(C#)图片存储到数据库和从数据库读取显示
- NHibernate3.2+Asp.net MVC3+Extjs 4.0.2项目实践(四):Web主程序结构和界面
- Asp.net MVC权限设计思考 (一)数据库建库部分
- asp.net MVC 显示数据库中的html 代码
- ASP.NET MVC 入门2、项目的目录结构与核心的DLL