for (int j = 0; j < ds2.Tables[0].Rows.Count; j++)
{
  if (datas2.Tables[0].Rows[j].RowState == DataRowState.Deleted)
      continue;
  for (int k = 0; k < treenode.Nodes.Count; k++)
  {
   if (treenode.Nodes[k].Text.Trim() == getNameById(ds2.Tables[0].Rows[j][1].ToString().Trim()))
{
   TreeNode node2 = new TreeNode(ds2.Tables[0].Rows[j][2].ToString().Trim());
   node2.ImageIndex = 2;
   node2.Tag = "menu2" + ds2.Tables[0].Rows[j]["SortID"].ToString().Trim();
   treenode.Nodes[k].Nodes.Add(node2);
   DataTable dt_nodes2 = getNameById2_01(ds2.Tables[0].Rows[k][1].ToString().Trim());
   for (int dt_nodes2_row = 0; dt_nodes2_row < dt_nodes2.Rows.Count; dt_nodes2_row++)
   {
      string strID = dt_nodes2.Rows[dt_nodes2_row]["SortID"].ToString();
      string strName = dt_nodes2.Rows[dt_nodes2_row]["SortName"].ToString();
      DataTable dt = new DataTable("TempTable_Nodes3");
      dt.Columns.Add("Sort3ID");
      dt.Columns.Add("Sort2ID");
      dt.Columns.Add("Sort3Name");
      if (node2.Text.Trim() == strName)
      {
         for (int n = 0; n < ds3.Tables[0].Rows.Count; n++)
         {
            if (ds3.Tables[0].Rows[n][1].ToString() == strID)
            {
              DataRow dr = dt.NewRow();
              dr["Sort3ID"] = ds3.Tables[0].Rows[n][0].ToString();
              dr["Sort2ID"] = strID;
              dr["Sort3Name"] = ds3.Tables[0].Rows[n][2].ToString();
              dt.Rows.Add(dr);
            }
         }
        for (int dt_Row = 0; dt_Row < dt.Rows.Count; dt_Row++)
        {
           TreeNode node3 = new TreeNode(dt.Rows[dt_Row]["Sort3Name"].ToString());
           node3.ImageIndex = 2;
           node3.Tag = "menu3" + dt.Rows[dt_Row]["Sort3ID"].ToString();
           node2.Nodes.Add(node3);
         }
      }
   }
 }
 }

解决方案 »

  1.   

    treeview tv = new treeview();
    TreeNode tn1 = new TreeNode();
                tn1.Text = "hello1";
                tv.Nodes.Add(tn1);
                TreeNode tn2 = new TreeNode();
                tn2.Text = "hello2";
                tn1.Nodes.Add(tn2);
                TreeNode tn3 = new TreeNode();
                tn3.Text = "hello3";
                tn2.Nodes.Add(tn3);
                TreeNode tn4 = new TreeNode();
                tn4.Text = "hello4";
                tn3.Nodes.Add(tn4);
      

  2.   

    treeview tv = new treeview();
    TreeNode tn1 = new TreeNode();
                tn1.Text = "hello1";
                tv.Nodes.Add(tn1);
                TreeNode tn2 = new TreeNode();
                tn2.Text = "hello2";
                tn1.ChildNodes.Add(tn2);
                TreeNode tn3 = new TreeNode();
                tn3.Text = "hello3";
                tn2.ChildNodes.Add(tn3);
                TreeNode tn4 = new TreeNode();
                tn4.Text = "hello4";
                tn3.ChildNodes.Add(tn4);
      

  3.   

    郁闷,一个递归就OK啦,还这样写,以后要扩展到5级,你在内嵌FOR?
      

  4.   

    楼主,TreeView控件加载数据最后别用嵌套循环,如果级数不确定的话,那么你加载的数据肯定会出问题建议用递归或别的方法,如一级一级的加载,即点击某项,再去显示它的子项
      

  5.   

     /// <summary>
            /// 添加公司列表
            /// </summary>
            public void InsertCompanyNode(IndustryCompany[] CompanyList, TreeView tvCars)
            {
                
                int i;
                int j;
                int iOneNodes;
                int iTwoNodes;
                int iThreeNodes;
                int iFourNodes;
                int jListCount;
                jListCount = CompanyList.Length;
                TreeNode tempNode = null;
                IndustryCompany temCompanyList;
                try
                {
                    for (i = 0; i <= 4; i++)
                    {
                        for (j = 0; j < jListCount; j++)
                        {
                            //加一级节点
                            if (CompanyList[j].CompanyLevel == 0 && i == 0)
                            {
                                tempNode = tvCars.Nodes.Add(CompanyList[j].CompanyName);
                                tempNode.Tag = CompanyList[j];
                            }
                            //加二级节点
                            if (CompanyList[j].CompanyLevel == 1 && i == 1)
                            {
                                for (iOneNodes = 0; iOneNodes < tvCars.Nodes.Count; iOneNodes++)
                                {
                                    temCompanyList = (IndustryCompany)(tvCars.Nodes[iOneNodes].Tag);
                                    if (temCompanyList.CompanyId == CompanyList[j].RootId)
                                    {
                                        tempNode = tvCars.Nodes[iOneNodes].Nodes.Add(CompanyList[j].CompanyName);
                                        tempNode.Tag = CompanyList[j];
                                        break;
                                    }
                                }
                            }
                            //加三级节点
                            if (CompanyList[j].CompanyLevel == 2 && i == 2)
                            {
                                Boolean bTrue = false;
                                for (iOneNodes = 0; iOneNodes < tvCars.Nodes.Count; iOneNodes++)
                                {
                                    if (bTrue == true)
                                    {
                                        break;
                                    }                                for (iTwoNodes = 0; iTwoNodes < (tvCars.Nodes[iOneNodes].Nodes.Count); iTwoNodes++)
                                    {
                                        temCompanyList = (IndustryCompany)(tvCars.Nodes[iOneNodes].Nodes[iTwoNodes].Tag);
                                        if (temCompanyList.CompanyId == CompanyList[j].SubId1)
                                        {
                                            tempNode = tvCars.Nodes[iOneNodes].Nodes[iTwoNodes].Nodes.Add(CompanyList[j].CompanyName);
                                            tempNode.Tag = CompanyList[j];
                                            bTrue = true;
                                            break;
                                        }
                                    }
                                }
                            }
                            //加四级节点
                            if (CompanyList[j].CompanyLevel == 3 && i == 3)
                            {
                                Boolean bTrue = false;
                                for (iOneNodes = 0; iOneNodes < tvCars.Nodes.Count; iOneNodes++)
                                {
                                    if (bTrue == true)
                                    {
                                        break;
                                    }
                                    for (iTwoNodes = 0; iTwoNodes < (tvCars.Nodes[iOneNodes].Nodes.Count); iTwoNodes++)
                                    {
                                        if (bTrue == true)
                                        {
                                            break;
                                        }
                                        for (iThreeNodes = 0; iThreeNodes < (tvCars.Nodes[iOneNodes].Nodes[iTwoNodes].Nodes.Count); iThreeNodes++)
                                        {
                                            temCompanyList = (IndustryCompany)(tvCars.Nodes[iOneNodes].Nodes[iTwoNodes].Nodes[iThreeNodes].Tag);
                                            if (temCompanyList.CompanyId == CompanyList[j].SubId2)
                                            {
                                                tempNode = tvCars.Nodes[iOneNodes].Nodes[iTwoNodes].Nodes[iThreeNodes].Nodes.Add(CompanyList[j].CompanyName);
                                                tempNode.Tag = CompanyList[j];
                                                bTrue = true;
                                                break;
                                            }
                                        }
                                    }
                                }
                            }
                            //加五级节点
                            if (CompanyList[j].CompanyLevel == 4 && i == 4)
                            {
                                Boolean bTrue = false;
                                for (iOneNodes = 0; iOneNodes < tvCars.Nodes.Count; iOneNodes++)
                                {
                                    if (bTrue == true)
                                    {
                                        break;
                                    }
                                    for (iTwoNodes = 0; iTwoNodes < (tvCars.Nodes[iOneNodes].Nodes.Count); iTwoNodes++)
                                    {
                                        if (bTrue == true)
                                        {
                                            break;
                                        }
                                        for (iThreeNodes = 0; iThreeNodes < (tvCars.Nodes[iOneNodes].Nodes[iTwoNodes].Nodes.Count); iThreeNodes++)
                                        {
                                            if (bTrue == true)
                                            {
                                                break;
                                            }
                                            for (iFourNodes = 0; iFourNodes < (tvCars.Nodes[iOneNodes].Nodes[iTwoNodes].Nodes[iThreeNodes].Nodes.Count); iFourNodes++)
                                            {                                            temCompanyList = (IndustryCompany)(tvCars.Nodes[iOneNodes].Nodes[iTwoNodes].Nodes[iThreeNodes].Nodes[iFourNodes].Tag);
                                                if (temCompanyList.CompanyId == CompanyList[j].SubId3)
                                                {
                                                    tempNode = tvCars.Nodes[iOneNodes].Nodes[iTwoNodes].Nodes[iThreeNodes].Nodes[iFourNodes].Nodes.Add(CompanyList[j].CompanyName);
                                                    tempNode.Tag = CompanyList[j];
                                                    bTrue = true;
                                                    break;
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                catch (Exception ex)
                {            }                    }
    这个我试过是可以的