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

递归,根据查询结果动态生成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);
} 

 

posted @ 2012-07-31 14:50  筱若流苏  阅读(312)  评论(0)    收藏  举报