您的位置:首页 > 其它

递归,根据查询结果动态生成TreeView

2012-07-31 14:50 253 查看
递归,根据查询结果动态生成TreeView

数据表:



相关C#代码:

/// <summary>
/// 根据递归查询结果动态生成TreeView
/// 递归查询,表做为参数传递过来
/// </summary>
/// <param name="nodes">TreeView的节点集合</param>
/// <param name="parentid">所属父级的ID</param>
/// <param name="tb">数据库中对应的表</param>
public void CreateTreeView(TreeNodeCollection nodes, string parentid, DataTable tb)
{
DataView TempDV = new DataView();
TreeNode TempNode;
TempDV.Table = tb;
TempDV.RowFilter = " MaterialFather= '" + parentid + " ' ";
foreach (DataRowView drv in TempDV)
{
TempNode = new TreeNode();
TempNode.Name = drv["MaterialID"].ToString();
TempNode.Text = drv["MaterialName"].ToString() + "[" + drv["MaterialCount"].ToString() + "," + drv["MaterialState"].ToString() + "]";
if (drv["MaterialState"].ToString() == "采")
{
if (dic.ContainsKey(drv["MaterialName"].ToString()))
{
dic[drv["MaterialName"].ToString()] = dic[drv["MaterialName"].ToString()] + 1;
}
else
{
dic.Add(drv["MaterialName"].ToString(), 1);
}
}
TempNode.Tag = drv["MaterialFather"].ToString();
nodes.Add(TempNode);

CreateTreeView(TempNode.Nodes, drv["MaterialName"].ToString(), tb);
}
}

Dictionary<string, int> dic = new Dictionary<string, int>();

//查询出需要购买的东西
public void GetNeedBuy()
{
foreach (var item in dic)
{
txtShowNeedBuy.Text += item.Key+":"+item.Value+"\t";
}
}

//方法调用
public void AutoTreeCreate()
{
DataTable My_tb = DBHelper.SqlDateset("select * from table_Materials").Tables[0];
tvMouse.Nodes.Clear();
CreateTreeView(this.tvMouse.Nodes, "0", My_tb);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: