none
請問 ~ ListBox1.DataSource 要如何實現選項不重複? RRS feed

  • 問題

  • 各位前輩好~

          在下最近又碰到一個問題,想請各位指點,我現在有一個資料表如下:

    我要將這些資料帶入ListBox1、ListBox2、ListBox3之中,並且要是選

    ListBox1才會依資料帶出ListBox2的選項,如下:

    我原本都是用SQL語法一個ListBox一個去抓資料並做群組,例如

    ListBox1:SELECT 資料一 FROM 資料表 GROUP BY 資料一

    ListBox2:SELECT 資料二 FROM 資料表 GROUP BY 資料二 Where 資料一 = '汽車'

    ListBox3:SELECT 資料三 FROM 資料表 GROUP BY 資料三 Where 資料一 = '汽車' AND 資料二 = '藍色'

    然後將擷取回來的資料放入DataTableCollection之中,然後做ListBox連結如下:

    ListBox1.DataSource = DataTableCollection[0];

    ListBox1.DisplayMember = "資料表一";

    但是這樣子需要去擷取資料庫三次,所以我改成一次把資料表一、二、三都抓回來

    SELECT * FROM 資料表 ,然後再使用DataTableCollection.Select(資料一 = '汽車')做搜尋

    但是這個方法會造成ListBox的選項重複,而DataSource又不能使用ListBox1..Items.RemoveAt()來刪除

    重複,所以想請問各位前輩,如果我希望一次載入表單,然後再依照條件放入ListBox並且不重複的話要如做?

    再麻煩各位前輩解惑了,謝謝

     


    2014年4月24日 上午 08:43

解答

  • 2014年4月24日 上午 09:04
  • 簡單的作法, 把 ListBox.DataSource 屬性指向的 DataTable 獨立出來, 不要和從資料庫查詢資料得到的 DataTable 混在一起

    假設 ListBox.Datasource = DT0

    然後你從資料庫查詢回來的整個DataTable 是 AllDataTable

    當你需要更動 ListBox 選項時, 把 DT0 清空, 再加入新的資料. 這樣你就不用對著 ListBox 動作, 只要操作中介來源資料.


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    2014年4月24日 上午 09:18
    版主

所有回覆

  • 2014年4月24日 上午 09:04
  • 簡單的作法, 把 ListBox.DataSource 屬性指向的 DataTable 獨立出來, 不要和從資料庫查詢資料得到的 DataTable 混在一起

    假設 ListBox.Datasource = DT0

    然後你從資料庫查詢回來的整個DataTable 是 AllDataTable

    當你需要更動 ListBox 選項時, 把 DT0 清空, 再加入新的資料. 這樣你就不用對著 ListBox 動作, 只要操作中介來源資料.


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    2014年4月24日 上午 09:18
    版主