谢谢!

解决方案 »

  1.   

    private void Page_Load(object sender, System.EventArgs e)
    {
        if(!IsPostBack)
        {
    DataTable dt=new DataTable();
    dt=this.GetDataSource();
    Session["dt"]=dt;
    BoundTreeview(this.TreeView1.Nodes,0);
        }
    }
    private DataTable GetDataSource()
    {
    DataTable dt=new DataTable("dt");
    dt.Columns.Add(new DataColumn("ID",typeof(System.Int32)));
    dt.Columns.Add(new DataColumn("PID",typeof(System.Int32)));
    dt.Columns.Add(new DataColumn("NUM",typeof(System.Int32)));
    dt.Columns.Add(new DataColumn("NAME",typeof(System.String)));
    DataRow dr;

    dr=dt.NewRow();
    dr["ID"]=1;
    dr["PID"]=0;
    dr["NUM"]=1;
    dr["NAME"]="1";
    dt.Rows.Add(dr); dr=dt.NewRow();
    dr["ID"]=2;
    dr["PID"]=1;
    dr["NUM"]=2;
    dr["NAME"]="2";
    dt.Rows.Add(dr); dr=dt.NewRow();
    dr["ID"]=3;
    dr["PID"]=1;
    dr["NUM"]=5;
    dr["NAME"]="ID3";
    dt.Rows.Add(dr); dr=dt.NewRow();
    dr["ID"]=4;
    dr["PID"]=0;
    dr["NUM"]=2;
    dr["NAME"]="ID4";
    dt.Rows.Add(dr); dr=dt.NewRow();
    dr["ID"]=5;
    dr["PID"]=4;
    dr["NUM"]=1;
    dr["NAME"]="ID5";
    dt.Rows.Add(dr); dr=dt.NewRow();
    dr["ID"]=6;
    dr["PID"]=0;
    dr["NUM"]=3;
    dr["NAME"]="ID6";
    dt.Rows.Add(dr); dr=dt.NewRow();
    dr["ID"]=7;
    dr["PID"]=0;
    dr["NUM"]=1;
    dr["NAME"]="ID7";
    dt.Rows.Add(dr);
    dr=dt.NewRow();
    dr["ID"]=8;
    dr["PID"]=7;
    dr["NUM"]=1;
    dr["NAME"]="ID8";
    dt.Rows.Add(dr);
    dr=dt.NewRow();
    dr["ID"]=9;
    dr["PID"]=8;
    dr["NUM"]=1;
    dr["NAME"]="ID9";
    dt.Rows.Add(dr);
    dr=dt.NewRow();
    dr["ID"]=10;
    dr["PID"]=8;
    dr["NUM"]=2;
    dr["NAME"]="ID10";
    dt.Rows.Add(dr);
    dr=dt.NewRow();
    dr["ID"]=11;
    dr["PID"]=7;
    dr["NUM"]=2;
    dr["NAME"]="ID11";
    dt.Rows.Add(dr);
    return dt;
    }
    private void BoundTreeview(TreeNodeCollection TreeNodes ,int ParentID)
    {
    DataTable dt=new DataTable();
    dt=(DataTable)Session["dt"];
    DataView treeDV = new DataView();
    int treeId;
    TreeNode treeTemp;
    string treeName;
    treeDV.Table = dt;
    treeDV.RowFilter = "ID<>'" + ParentID + "' and PID='" + ParentID + "'";
    treeDV.Sort="NUM";
    foreach(DataRowView treeDVrow in treeDV)
    {
    treeTemp=new TreeNode();
    treeName = treeDVrow["NAME"].ToString();
    treeId = Convert.ToInt32(treeDVrow["ID"].ToString());
    treeTemp.ID = treeId.ToString();
    treeTemp.Text = treeName;
    treeTemp.CheckBox=true;
    treeTemp.Expanded=true;
    TreeNodes.Add(treeTemp);
    BoundTreeview(TreeNodes[TreeNodes.Count - 1].Nodes, treeId);
    }
    }
      

  2.   

    /// <summary>
    /// 绑定TreeView控件
    /// </summary>
    public static void BindTreeView(DataTable tb,TreeView tv,string fieldID,string fieldName,string fieldParent)
    {
    tv.Font = Common.MySettings.myFont; if(tb.Rows.Count<1) return; if(!(tb.Columns.Contains(fieldID) & tb.Columns.Contains(fieldName))) 
    {
    Common.ShowMsg("输入的参数不正确,字段名在表中不存在,请与系统开发人员联系");
    return;
    } if(fieldParent != null)
    if( !tb.Columns.Contains(fieldParent))
    {
    Common.ShowMsg("输入的参数不正确,字段名在表中不存在,请与系统开发人员联系");
    return;
    } tv.Nodes.Clear();
    AddTreeNode(null,tb,tv.Nodes,fieldID,fieldName,fieldParent);
    }// 
    /// <summary>
    /// 通过此方法(递归)实现TreeView控件的绑定
    /// </summary>
    public static void AddTreeNode(string mID,DataTable tb,TreeNodeCollection mNodes,string fieldID,string fieldName,string fieldParent)
    {
    string rowFilter = "";
    DataRow[] rows = new DataRow[tb.Rows.Count]; if(fieldParent != null)
    {
    if(mID == null)
    rowFilter = "IsNull(" + fieldParent + ",'0')='0' OR " + fieldParent + "=''" ;
    else
    rowFilter = fieldParent + "='" + mID + "'" ; rows = tb.Select(rowFilter);
    }
    else
    tb.Rows.CopyTo(rows,0); if(rows != null)
    if(rows.Length>0)
    for(int i=0;i<rows.Length;i++)
    {
    TreeNode newNode = new TreeNode(rows[i][fieldName].ToString());

    newNode.Tag = rows[i];
    mNodes.Add(newNode);
    if(fieldParent != null)
    AddTreeNode(rows[i][fieldID].ToString(),tb,newNode.Nodes,fieldID,fieldName,fieldParent);

    if(mID == null)
    newNode.Expand();
    }
    }//
      

  3.   

    yohomonkey(思考中的猴)的代码好像可以