具体情况如下:
另外有个ComboBox可以选择使用的数据库,
选择以后我使用SqlConnection.ChangeDatabase()来切换当前数据库。
当用户从没有权限的数据库切换到有权限的数据库时,
显示数据的ComboBox会发生标题所说情况。
断点查看错误显示的ComboBox的数据源能发现DataTable里面值是正常的。
ComboBox的Items里面行数,列数正常,
但是显示的值都变成了System.Data.DataView。
如果在有权限的几个数据库间切换的时候,一切正常。
涉及到的代码:
comboBoxArea.DisplayMember = area.AreaName;//return string
comboBoxArea.ValueMember = area.AreaValue;//return string
comboBoxArea.DataSource = area.GetArea();//return DataTable

解决方案 »

  1.   

    我以前用oracle的时候有过这种情况。解决方法:
    (1)DisplayMember ,ValueMember 都大写如:DisplayMember="AAAA"
    (2) 前面加上comboBoxArea.DataBinding.Clear();
    不知道管不管事
      

  2.   

    comboBox1.DisplayMember
    comboBox1.ValueMember
    有没设置?
      

  3.   

    感谢楼上提醒,我仔细查找了一下,发现问题所在了。
    行1:comboBoxArea.DisplayMember = area.AreaName;//return string
    行2:comboBoxArea.ValueMember = area.AreaValue;//return string
    行3:comboBoxArea.DataSource = area.GetArea();//return DataTable
    行4:…… //断点位置
    断点仔细看了一下,行1的DisplayMember值为空字符串"",
    但是area.AreaName有值,而且不为空字符串。
    这个怎么解释?area的AreaName内容很简单。
    public string AreaName
            {
                get
                {
                    return "AreaPartCode";
                }
            }
      

  4.   

    lovepp2004() ( ) 信誉:100    Blog  2007-02-02 13:47:51  得分: 0  
     
     
       我以前用oracle的时候有过这种情况。解决方法:
    (1)DisplayMember ,ValueMember 都大写如:DisplayMember="AAAA"
    (2) 前面加上comboBoxArea.DataBinding.Clear();
    不知道管不管事
      
     2是不行的,帮定DataSource以后就不可以手动处理item了。
      

  5.   

    http://community.csdn.net/Expert/topic/4767/4767410.xml?temp=.4685785我的情况和他一样。