asp.net2.0中treeview绑定数据库,100分 急!!!!

oec2003 2007-09-25 09:50:44
数据库:
CategoryID ParentID 名称 层次

AE5931B0-BE45-4942-9D04-64A6901015DC 4B7C1DF5-D667-4533-AEF5-BA17EFDBD9B0 客戶服務處 00010001000100010013
FC7FEC56-A47B-43BE-854A-DBFF4420190C AE5931B0-BE45-4942-9D04-64A6901015DC 客服一部 000100010001000100130001
99156740-9756-4846-A43E-B5DC5B0394BB FC7FEC56-A47B-43BE-854A-DBFF4420190C 原廠作業課 0001000100010001001300010001
D1E4E03D-02B9-4B96-B927-BC0BA4B11111 FC7FEC56-A47B-43BE-854A-DBFF4420190C 退貨中心 0001000100010001001300010002
2D6F0030-8682-4EF9-B0B6-5DC8ACB23DC1 FC7FEC56-A47B-43BE-854A-DBFF4420190C 專案課 0001000100010001001300010003
F0053403-AA37-49FB-BED9-7340EC74346C FC7FEC56-A47B-43BE-854A-DBFF4420190C 維修收件課 0001000100010001001300010004
27CFCCEE-10E3-4684-8C5D-A530F6C92A94 FC7FEC56-A47B-43BE-854A-DBFF4420190C 維修備品課 0001000100010001001300010005
1A3C8766-2FF7-4B98-9F14-29CAF3ED69D4 AE5931B0-BE45-4942-9D04-64A6901015DC 客服二部 000100010001000100130002
76814578-7B84-4599-88CA-C2357AE3A3BD 1A3C8766-2FF7-4B98-9F14-29CAF3ED69D4 數位週邊課 0001000100010001001300020001
5FC60D8B-E9F4-4625-BA5D-9D5A54846635 1A3C8766-2FF7-4B98-9F14-29CAF3ED69D4 顯示器課 0001000100010001001300020002
B91E63D8-B183-4861-B48C-A8038D00EC66 1A3C8766-2FF7-4B98-9F14-29CAF3ED69D4 通訊課 0001000100010001001300020003
930221A4-32C3-4FE6-B5CA-D7672A766267 1A3C8766-2FF7-4B98-9F14-29CAF3ED69D4 光華服務站 0001000100010001001300020004
E4924CE5-D380-49AB-B439-10C5CBCA6D31 AE5931B0-BE45-4942-9D04-64A6901015DC 客服三部 000100010001000100130003
64C8475A-2EDC-4ED7-8347-83D213E5A9D0 E4924CE5-D380-49AB-B439-10C5CBCA6D31 伺服器課 0001000100010001001300030001
4E58AF8A-F119-4028-A223-9110FE1AD817 E4924CE5-D380-49AB-B439-10C5CBCA6D31 網路課 0001000100010001001300030002
824761DE-065F-4C76-8326-A28CE77ADC27 E4924CE5-D380-49AB-B439-10C5CBCA6D31 系統課 0001000100010001001300030003
727D3FD9-CE7D-43B0-BEAE-614EEA4496E9 AE5931B0-BE45-4942-9D04-64A6901015DC 客服四部 000100010001000100130004
19F4B8E5-8E43-4A5F-981D-68243013F16A 727D3FD9-CE7D-43B0-BEAE-614EEA4496E9 桃竹客服課 0001000100010001001300040001
DC8F9AF8-42A1-4820-9B3E-885C2247B223 727D3FD9-CE7D-43B0-BEAE-614EEA4496E9 維修收件課 0001000100010001001300040002
699493C4-BA3C-47AD-B4EA-0BA7903E33EA 727D3FD9-CE7D-43B0-BEAE-614EEA4496E9 數位週邊課 0001000100010001001300040003
D7163846-A836-4E9E-A4A5-9D402737AA72 727D3FD9-CE7D-43B0-BEAE-614EEA4496E9 系統整合課 0001000100010001001300040004
F5C4F2F3-77F4-4327-A8D6-A78000087889 AE5931B0-BE45-4942-9D04-64A6901015DC 客服五部 000100010001000100130005
E582CA2F-B01C-4136-8F91-4E1B7DFC60A5 F5C4F2F3-77F4-4327-A8D6-A78000087889 台南客服課 0001000100010001001300050001
D69FAEF8-9CEC-4408-9145-77FB9D866032 F5C4F2F3-77F4-4327-A8D6-A78000087889 高雄客服課 0001000100010001001300050002


按照层次在treeview中显示,,注意id 和 parentid都是uniqueidentifier类型
最好是用递归的方法
真的很急啊,谢谢大家了
...全文
580 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
jyx943 2008-07-09
  • 打赏
  • 举报
回复
学习
枫叶星辰 2008-03-04
  • 打赏
  • 举报
回复
mark
oec2003 2007-09-25
  • 打赏
  • 举报
回复
dvTree.RowFilter = "ParentID ='" + ParentID + "'";
谢谢,我就是上面那句有点错误,现在已经解决了
ilingyue 2007-09-25
  • 打赏
  • 举报
回复
发点参考一下吧,应该会有用的

//加载对应一级目录
private void LoadTreeView()
{
DataTable dt_cat = hyscon.selcategory(clist);
TVCategory.Nodes.Clear();
int dtc = dt_cat.Rows.Count;
int cc = dt_cat.Select("CategoryID=" + cl[0]).Length;
for (int i = 0; i < cl.Length; i++)
{
TreeNode tn = new TreeNode();
tn.SelectAction = TreeNodeSelectAction.Select;
tn.Text = dt_cat.Select("CategoryID=" + cl[i])[0]["CategoryName"].ToString();
tn.Value = cl[i];
tn.NavigateUrl = "EditNewsList.aspx?typeid=" + tn.Value;
SetItem(ref tn, ref dt_cat);
this.TVCategory.Nodes.Add(tn);
}


}

//加载子目录
private void SetItem(ref TreeNode tn, ref DataTable dt_cat)
{
DataRow[] drs = dt_cat.Select("ParentID=" + tn.Value);
foreach (DataRow dr in drs)
{
TreeNode nn = new TreeNode();
nn.SelectAction = TreeNodeSelectAction.Select;
if (dr["Free"].ToString() == "Y")
{
nn.Text = dr["CategoryName"].ToString() + " -- Free";
}
else
{
nn.Text = dr["CategoryName"].ToString();
}
nn.Value = dr["CategoryID"].ToString();
nn.NavigateUrl = "EditNewsList.aspx?typeid=" + nn.Value;
SetItem(ref nn, ref dt_cat);
tn.ChildNodes.Add(nn);
}
}
yuan74521940 2007-09-25
  • 打赏
  • 举报
回复
LS都那么详细了 !!只好帮你顶个
zwwlovezy1 2007-09-25
  • 打赏
  • 举报
回复
做个递归:

C#:
----------------------------------------------------------------
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
this.NodeBind();//页面加载时解析数据库绑定TreeNode根节点
}
}

#region//数据库连接字符串
public void conString()
{
string conStr = "server=.;uid=sa;pwd=;database=Demo";
con = new SqlConnection(conStr);
}
#endregion

#region//页面加载时绑定TreeNode根节点
public void NodeBind()
{
this.tvadd.Nodes[0].ChildNodes.Clear();//清空TreeView中所有节点
this.tvadd.Nodes[0].Expanded = true;//设置根节点为展开形式
this.AddChildNode("NULL",this.tvadd.Nodes[0]);
}
#endregion

#region//递归解析数据库中节点并绑定在TreeView控件上
/// <summary>
/// 递归解析数据库中节点并绑定在TreeView控件上
/// </summary>
/// <param name="sqltj">要解析库这个节点归属于哪个父节点</param>
/// <param name="tn">要添加下一级节点的父节点</param>
public void AddChildNode(string sqltj,TreeNode tn)
{
string sql = "select * from AddNodes where ParentID";//查询该父节点下还有无子节点SQL语句
if (sqltj == "NULL")
{
sql += " IS NULL";//也就是说是根节点下面的第一级子节点
}
else
{
sql += "=" + sqltj;//查询sqltj下有无子节点
}

DataTable dt = this.dtDataBind(sql);
if (dt.Rows.Count == 0)//说明此节点下无子节点
{
return;//退出
}
else
{
for (int i = 0; i < dt.Rows.Count; i++)//循环DataTable表中子节点记录
{
TreeNode tnchild = new TreeNode();//创建新的子节点
tnchild.Text = dt.Rows[i][1].ToString();//为新建子节点的文本赋值
tnchild.Value = dt.Rows[i][1].ToString();//为新建子节点的Value赋值
tnchild.Expanded = true;//设置为不展开节点
tn.ChildNodes.Add(tnchild);//添加此节点的下一级子节点
//递归调用,一直往下直到添加完这一级下面的所有子节点为止,再转到下一个父节点,并添加所有此父节点下面的所有子节点
//i代表DataTable表中循环记录,0代表取得这个记录的ID值,为下面继续检查这个ID下是否还有子目录
//tnchild递归传递给下一次调用此方法,此时如果这个节点下还有子节点,它便成为父节点,对它下面的子节点进行添加
this.AddChildNode(dt.Rows[i][0].ToString(),tnchild);
}
}
}
#endregion

#region//绑定DataTable表
public DataTable dtDataBind(string sql)
{
this.conString();
da = new SqlDataAdapter(sql,con);
dt = new DataTable();
da.Fill(dt);
return dt;
}
#endregion
kyouken2007 2007-09-25
  • 打赏
  • 举报
回复
去数据库的部分,搂主自己改改
--------------------------------------------
private void InitReportMenu()
{
try
{
string strCD= 参数;

DataSet ds = GetDataFromDB(strCD);
if (!ds.Tables[0].Rows.Count.Equals(0))
{
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
TreeNode menuNode = new TreeNode();

menuNode.Text = ds.Tables[0].Rows[i]["Name"].ToString();

menuNode.Value = ds.Tables[0].Rows[i]["Code"].ToString();

TreeView1.Nodes.Add(menuNode);
//二級
addchildmenu1(menuNode, menuNode.Value);
}
}

}
catch
{
throw;
}
}

private void addchildmenu1(TreeNode node, string strID)
{

DataSet ds = GetDateFromDB(strID);

if (!ds.Tables[0].Rows.Count.Equals(0))
{
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
TreeNode menuNode = new TreeNode();

menuNode.Text= ds.Tables[0].Rows[i]["NAME"].ToString();

menuNode.Value = ds.Tables[0].Rows[i]["CODE"].ToString();
node.ChildNodes.Add(menuNode);
//下一级
addchildmenu1(menuNode, menuNode.Value);
}
}
}

Jasonchen82 2007-09-25
  • 打赏
  • 举报
回复
晕...这个太简单呀..LZ..这个是基本的算法..
wuhan_dotnet 2007-09-25
  • 打赏
  • 举报
回复
private void addNode(string ParentID, TreeNode pNode)
{
DataSet ds = (DataSet)this.ViewState["ds"];
DataView dvTree = new DataView(ds.Tables[0]);
dvTree.RowFilter = "ParentID ='" + ParentID + "'";
foreach (DataRowView drv in dvTree)
{
TreeNode node = new TreeNode();
if (pNode == null)
{
node.Text = drv["NodeName"].ToString();
this.mytreeview.Nodes.Add(node);
node.Expanded = true;
// node.NavigateUrl = drv["URL"].ToString();
// node.Value = drv["NodeID"].ToString();
int n = Convert.ToInt32(drv["NodeID"].ToString());
node.Value = drv["NodeID"].ToString();
this.addNode(drv["NodeID"].ToString(), node);
}
else
{
node.Text = drv["NodeName"].ToString();
pNode.ChildNodes.Add(node);
node.Expanded = true;
//node.NavigateUrl = drv["URL"].ToString();
node.Value = drv["NodeID"].ToString();
this.addNode(drv["NodeID"].ToString(), node);
}
}
}


不知道行不行

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧