程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> ComboBox控件“設置 DataSource 屬性後無法修改項集合”的解決【轉】

ComboBox控件“設置 DataSource 屬性後無法修改項集合”的解決【轉】

編輯:C#入門知識

      編寫Winform程序,遇到comboBox的綁定事件和索引項變更事件的沖突問題,就是“設置 DataSource 屬性後無法修改項集合”的錯誤問題,網上查了很多,大多說在索引項變更是進行非空判斷,還有個老兄自己加了個綁定成功狀態來輔助判斷,但是我照做了發現還 是不行,後來遇到一位老兄幫我解決了問題。

問題描述:

  我想實現多個下拉列表聯動的功能,例如有三個下拉列表A、B、C,當選擇了下拉列表A中的數據後,下拉列表B中的數據發生相應的變化,選擇下拉 列表的B時下拉列表C的數據發生相應的變化。當然是采用ComboBox的DataSource屬性綁定數據啦。結果當我選擇下拉列表A的時候,系統拋出 異常“設置 DataSource 屬性後無法修改項集合”。

  解決問題:

  於是苦思冥想,上網查找資料,結果都沒有滿意的答案。最後還是查看幫助手冊,也沒有明確的答案。但是我從手冊上看到這樣一句話“實現 IList 接口的對象,如 DataSet 或 Array。”,請注意我標紅的那句話。靈感突現,再清除下拉列表項的時候首先將ComboBox.DataSource付空值“null”,問題果然就迎刃而解了。。

代碼實例如下:

 protected void BindArea(ComboBox combo_Area,int parentID)
        {
                        {
                combo_Area.DataSource = null;
                combo_Area.Items.Clear();
            }
            DataRow[] dList = areaList.Select("ParentID = " + parentID.ToString());
            if (dList.Length>0)
            {
                ArrayList da = new ArrayList();
                foreach (DataRow dr in dList)
                {
                    SysDic dic = new SysDic(dr);
                    da.Add(dic);
                }
                combo_Area.DisplayMember = "DicName";
                combo_Area.ValueMember = "DicID";
                combo_Area.DataSource = da;
            }
        }

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved