CSDN一样,多级的可以删除和添加的动态树。删除和添加,改变数据库中的值。请问这样的树怎么做,有没有这样的Demo或是实例???
解决方案 »
- 关于文件下载
- flash实现登录的功能
- 送分了!!简单javascript帮忙改改,谢谢!
- 求2003中验证控件分组解决办法
- asp.net控件的下载?
- 为什么Include会失效呢?
- GridView“GridView1”激发了未处理的事件“RowDeleting”,点击编辑也是这样
- PageIndex_Changed怎么用?是不是翻页时用到它?具体 50分,急
- ■■有什么ASP.NET书籍它的例子是ASP.NET和HTML代码分开,就是适合VB.NET编程的■■
- 哪位兄台能提供VS。NET 7张盘的卷标?
- ajax原创系列教程,从读取,修改,添加,分页,到酷酷的删除效果!
- 网页上用户需要在工厂车间背景图上自由增删设备的图标(就是button),大虾们说说实现的思路。。。
MzTreeView1.0 可以在
http://www.meizz.com/Web/Article.asp?id=436
获得。http://www.meizz.com
http://www.cnblogs.com/xvqm00/archive/2010/04/26/1721173.html
http://jasonhero.itpub.net/post/21565/255325
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class TreeView : System.Web.UI.Page
{
public List<ModelTree> TreeList = null;
protected void Page_Load(object sender, EventArgs e)
{
if (Session["TreeData"] == null)
{
TreeList = new List<ModelTree>(){
new ModelTree(){TId="0001",TName="董事会",IsParent=1 },
new ModelTree(){TId="0002",TName="监事会",IsParent=1 },
new ModelTree(){TId="0003",TName="工会",IsParent=1 },
new ModelTree(){TId="000101",TName="生产科",IsParent=0 },
new ModelTree(){TId="000102",TName="地质科",IsParent=0 },
new ModelTree(){TId="000201",TName="测量科",IsParent=0 },
new ModelTree(){TId="000301",TName="工会干事科",IsParent=0 }
};
Session["TreeData"] = TreeList;
}
else
{
TreeList = Session["TreeData"] as List<ModelTree>;
}
this.Tv1.Nodes.Clear();
this.Tv1.Nodes.Add(new TreeNode() { Text = "总部门" });
InitTree(TreeList, "000", this.Tv1.Nodes[0]); }
int count = 0;
public void InitTree(List<ModelTree> list, string ParentId, TreeNode Ptn)
{
List<ModelTree> lmt = new List<ModelTree>();
lmt = list.Where(N => N.TId.ToString().Contains(ParentId.ToString()) && N.TId != ParentId).ToList();
if (count == 0)
{
lmt = lmt.Where(I => I.IsParent == 1).ToList();
}
if (lmt.Count > 0)
{
count++;
foreach (ModelTree mt in lmt)
{
TreeNode Tn = new TreeNode();
Tn.Text = mt.TName + " <a href='NodeAdd.aspx?Type=add&TID=" + mt.TId.ToString() + "\'><font color='red'>添加节点</font></a>"
+ " <a href='NodeAdd.aspx?Type=upd&TID=" + mt.TId.ToString() + "\'><font color='black'>更新节点</font></a>";
Tn.Value = mt.TId.ToString();
Ptn.ChildNodes.Add(Tn);
InitTree(list, mt.TId.ToString(), Tn);
}
}
}
}操作的using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;public partial class NodeAdd : System.Web.UI.Page
{
string type = string.Empty;
string TID = string.Empty;
List<ModelTree> lt = new List<ModelTree>();
protected void Page_Load(object sender, EventArgs e)
{
lt = Session["TreeData"] as List<ModelTree>;
try
{
type = Request.QueryString["type"].ToString();
TID = Request.QueryString["TID"].ToString();
}
catch (NullReferenceException err)
{
throw err;
}
if (type.ToString() == "upd")
{
this.Txt_TID.ReadOnly = true;
this.Btn_Cmd.Text = "Update";
Btn_Cmd.Click += new EventHandler(Btn_UPD_Click);
}
else
{
this.Txt_TID.ReadOnly = true;
this.Btn_Cmd.Text = "Insert";
Btn_Cmd.Click += new EventHandler(Btn_ADD_Click);
this.Txt_TID.Text = (Convert.ToInt32(lt.FindAll(N => N.TId.Contains(TID)).Max(I => I.TId)) + 1).ToString().PadLeft(TID.Length + 2, '0'); } }
protected void Btn_UPD_Click(object sender, EventArgs e)
{
//Update
//取list.find 然后用值替换
Session["TreeData"] = lt;
Response.Redirect("TreeView.aspx");
}
protected void Btn_ADD_Click(object sender, EventArgs e)
{
//insert
//list.add方法
Session["TreeData"] = lt;
Response.Redirect("TreeView.aspx"); }
}实体的
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;/// <summary>
///ModelTree 的摘要说明
/// </summary>
[Serializable]
public class ModelTree
{
public ModelTree()
{ } private string _TId; public string TId
{
get { return _TId; }
set { _TId = value; }
}
private string _TName; public string TName
{
get { return _TName; }
set { _TName = value; }
}
private int _IsParent; public int IsParent
{
get { return _IsParent; }
set { _IsParent = value; }
}
}
就这个思路。自己看着弄算了。
添加那块 我没去判断IsParent.所以加载出有些问题