簡體   English   中英

如何使Treeview遞歸?

[英]How to make Treeview recursive?

我有以下代碼來填充Treeview中的數據。 如何使它遞歸,以便有多個層次? 當前它顯示如下,但我想將其顯示為三層。

這是現在的樣子

但是我正在尋找bomitem= '500101' && bomrev='B'

      500101
       ----100200
       ----300255
            ----100214


 treeView2.Nodes.Clear();
            SqlCommand cmd = new SqlCommand("select * from BOMDETAIL ORDER BY partId", cn);
            try
            {
                SqlDataReader dr = cmd.ExecuteReader();
                while(dr.Read())
                {
                    TreeNode node = new TreeNode(dr["bomItem"].ToString());
                    node.Nodes.Add(dr["partId"].ToString());
                    //node.Nodes.Add(dr["qty"].ToString());
                    node.Nodes.Add(dr["bomRev"].ToString());
                    treeView2.Nodes.Add(node);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

表格檢視

您是否正在尋找這樣的東西?

private void button_Click(object sender, EventArgs e)
{
      treeView2.Nodes.Clear();
      SqlCommand cmd = new SqlCommand("select * from BOMDETAIL ORDER BY partId", cn);
      try
      {
          SqlDataReader dr = cmd.ExecuteReader();
          SomeFun(dr, treeView2);
      }

     catch (Exception ex)
     {
          MessageBox.Show(ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
     }    
}

private void SomeFun(SqlDataReader dr, TreeView treeView2)
{
    if(dr.Read())
    {
       TreeNode node = new TreeNode(dr["bomItem"].ToString());
       node.Nodes.Add(dr["partId"].ToString();
       node.Nodes.Add(dr["bomRev"].ToString());
       treeView2.Nodes.Add(node);
       SomeFun(dr, treeView2);
    }
}

我的建議1.創建一個名為BOMDETAIL的新類,並創建該類的屬性,您在表中有多少列各具有一個屬性,如bomItem,partId等... 2.為該類(例如List)創建集合。 並為BOMDETAIL類創建對象,並從while循環內的dr變量為每個屬性分配值,每個BOMDETAIL類阻止添加列表。

例如:List lstBom = new List while(dr.Read())

               BOMDETAIL bom= new BOMDETAIL();
                bom.bomItem = dr["bomItem"].ToString();
                    ....
               lstBom.add(b);
  1. 現在,您可以在lstBom中給您想要的順序(遞歸),然后分配給樹視圖的Node Collection對象或ItemSource。

謝謝你的問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM