iT邦幫忙

0

將資料庫裡的資料用treevuew顯示相關問題

  • 分享至 

  • xImage

大家好,今天老師要我們作出如下圖的結果
https://ithelp.ithome.com.tw/upload/images/20180607/20110132UMhoiqkVQ4.jpg

但我目前只能做到這樣
https://ithelp.ithome.com.tw/upload/images/20180607/20110132ZLQLFIBCcL.jpg

以下是我的程式碼


        SqlConnection conn = null;
        SqlCommand command = null;
        private void button1_Click(object sender, EventArgs e)
        {
            using (conn = new SqlConnection("Data Source=.;Initial Catalog=Northwind;Integrated Security=True"))
            {
                using (SqlCommand command = new SqlCommand("select *from Customers", conn))
                {
                    conn.Open();
                    using (SqlDataReader datareader = command.ExecuteReader())
                    {

                        using (DataTable dataTable = new DataTable())
                        {
                          dataTable.Load(datareader);
                          this.dataGridView2.DataSource = dataTable;
                        }

                    }
                }
            }
        }
        private void button2_Click(object sender, EventArgs e)
        {
            categoriesTableAdapter1.Fill(northwindDataSet1.Categories);
            dataGridView1.DataSource = northwindDataSet1.Categories;
        }
        private void tabPage1_Click(object sender, EventArgs e)
        {

        }

        private void dataGridView2_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
          
        }

        private void button3_Click(object sender, EventArgs e)
        {

            try
            {
                using (conn = new SqlConnection("Data Source=.;Initial Catalog=Northwind;Integrated Security=True"))
                {
                    conn.Open();
                    using (SqlCommand command = new SqlCommand("select *from Customers", conn))
                    {

                        using (SqlDataReader datareader = command.ExecuteReader())
                        {

                            //TreeNode tree = new TreeNode();

                            //while (datareader.Read())
                            //{
                            //    treeView1.Nodes.Add(new TreeNode(datareader["Country"].ToString()));
                            //}
                            for (int i = 0; i < dataGridView2.Rows.Count; i++)
                            {
                                int rowindex = i + 1;
                                TreeNode node = new TreeNode("Row_" + rowindex);
                                for (int j = 0; j < dataGridView2.Columns.Count; j++)
                                {
                                    node.Nodes.Add(dataGridView2.Rows[i].Cells[j].Value.ToString());

                                }
                                treeView1.Nodes.Add(node);
                            }


                        }


                    }
                }
            }
            catch(Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

想請問有甚麼辦法可以做到我們老師要的結果,希望能給我一個方向,謝謝

看更多先前的討論...收起先前的討論...
神Q超人 iT邦研究生 5 級 ‧ 2018-06-08 13:22:50 檢舉
請問左邊的treeView裡面的資料是什麼呢?
感覺右邊的listView是以左邊treeView的值把資料篩選出來
tenno081 iT邦研究生 4 級 ‧ 2018-06-08 16:41:21 檢舉
treeview 裡面的內容就是listview裡的內容
都是一樣的內容,只是顯示方式有點不一樣
tenno081 iT邦研究生 4 級 ‧ 2018-06-08 16:47:35 檢舉
就是我想做出 以country這個欄位當作父節點,點開後會有city這個子節點,然後點
那些子節點會顯示相對應的資料這樣
神Q超人 iT邦研究生 5 級 ‧ 2018-06-09 23:34:09 檢舉
哦!可是目前的treeview好像是所有的資料行耶!
等到tree的資料拉出來後,透過click事件,就可以針對city的值去下條件,
把對應的公司名稱搜尋出來,
所以第一步要先把treeview的資料整理好!
可以先從Button3_click開始改起,下SQL語法去查出父節點的country,再用迴圈跑該country的city資料。
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

0
rainbowrain
iT邦新手 2 級 ‧ 2018-06-11 09:59:37
最佳解答

你的Case裡面樹狀結構中分兩層,第一層是國家,第二層是城市

你應該下兩個select,第一個把國家層的node整理出來
第二個select才依每筆資料中所屬的城市放到第一層node底下

建議問問題的時候把問題描述清楚一點,右邊datagridview的功能只能用猜的
看起來應該是在點擊樹狀結構的node時直接select相關資料
所以點擊第一層時要select by country
點擊第二層的時候要select by city
再把select的結果放到datagridview就好

0
優悠
iT邦新手 3 級 ‧ 2018-06-08 09:19:59
//(原)
using (SqlCommand command = new SqlCommand("select *from Customers", conn))

//(更)
using (SqlCommand command = new SqlCommand("select TOP 1 * from Customers", conn))

其實你再給多一點資料,例如:有條件WHERE什麼的。

tenno081 iT邦研究生 4 級 ‧ 2018-06-11 10:59:04 檢舉

我懂了,感謝解答

我要發表回答

立即登入回答