zoukankan      html  css  js  c++  java
  • ComboBox控件“设置 DataSource 属性后无法修改项集合”的解决【转】

          编写Winform程序,遇到comboBox的绑定事件和索引项变更事件的冲突问题,就是“设置 DataSource 属性后无法修改项集合”的错误问题,网上查了很多,大多说在索引项变更是进行非空判断,还有个老兄自己加了个绑定成功状态来辅助判断,但是我照做了发现还 是不行,后来遇到一位老兄帮我解决了问题。

    问题描述:

      我想实现多个下拉列表联动的功能,例如有三个下拉列表A、B、C,当选择了下拉列表A中的数据后,下拉列表B中的数据发生相应的变化,选择下拉 列表的B时下拉列表C的数据发生相应的变化。当然是采用ComboBox的DataSource属性绑定数据啦。结果当我选择下拉列表A的时候,系统抛出 异常“设置 DataSource 属性后无法修改项集合”。

      解决问题:

      于是苦思冥想,上网查找资料,结果都没有满意的答案。最后还是查看帮助手册,也没有明确的答案。但是我从手册上看到这样一句话“实现 IList 接口的对象,如 DataSet 或 Array。默认为空引用(在 Visual Basic 中为 Nothing)。 ”,请注意我标红的那句话。灵感突现,再清除下拉列表项的时候首先将ComboBox.DataSource付空值“null”,问题果然就迎刃而解了。红色字体中数据源付空值一定要在清除项目之前进行

    代码实例如下:

     protected void BindArea(ComboBox combo_Area,int parentID)
            {
                if (combo_Area.Items.Count > 0)
                {
                    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;
                }
            }

  • 相关阅读:
    第一章 工欲善其事 必先利其器—Android SDK工具(3)
    UVa 11063
    Remember the Word,LA3942(Trie树+DP)
    Atitit.Gui控件and面板----数据库区-mssql 2008 权限 配置 报表查看成员
    Android手机令牌教程
    cocos2d-x 在mac下执行 demo
    Install Oracle 10g on Red Hat Linux 5.3 Step by Step
    Python根据内嵌的数字将字符串排序(sort by numbers embedded in strings)
    mysql一次运行多个SQL文件
    CentOS/Linux 卸载MATLAB
  • 原文地址:https://www.cnblogs.com/rabtor/p/3194900.html
Copyright © 2011-2022 走看看