好久没写过WinForm程序了,昨天闲来无事就试着写个玩玩。界面中有两个combobox控件,第二个combobox控件中绑定值是根据第一个combobox值而定的。当时自己写的代码是:

 1         private void btnGetDBs_Click(object sender, EventArgs e) 2         { 3             string strconnection = "数据库连接字符串" ;            4  conn = new SqlConnection(strconnection); 5             string sql = "Sql语句"; 6  7             SqlDataAdapter da = new SqlDataAdapter(sql,conn); 8             DataSet ds = new DataSet(); 9             da.Fill(ds, "table");10 11             cmbDBs.DisplayMember = "Name";12             cmbDBs.ValueMember = "Name";13             cmbDBs.DataSource = ds.Tables[0].DefaultView;14             15         }16 17         private void cmbDBs_SelectedValueChanged(object sender, EventArgs e)18         {19             string strconnection = "数据库连接字符串";20             conn = new SqlConnection(strconnection);21             string sql = string.Format("Sql语句", cmbDBs.SelectedValue.ToString());22 23             SqlDataAdapter da = new SqlDataAdapter(sql, conn);24             DataSet ds = new DataSet();25             da.Fill(ds, "table");26             cmbTables.DataSource = ds.Tables[0].DefaultView;27             cmbTables.DisplayMember = "Name";28             cmbTables.ValueMember = "Name";29         }

可是在获得cmbDBs.SelectedValue.ToString()值时说“未将对象引用到实例”或者就是取到“System.data.dataRowView”的值。后来在网上了下,只要将绑定第二个combobox的代码写在private void cmbDBs_SelectedIndexChanged(object sender, EventArgs e)事件中就能正确取出值了。即:

 1         private void btnGetDBs_Click(object sender, EventArgs e) 2         { 3             string strconnection = "server=" + txtServiceIP.Text.Trim() + ";uid=" + txtUid.Text.Trim() + ";pwd=" + txtPwd.Text.Trim(); 4             conn = new SqlConnection(strconnection); 5             string sql = "Select [Name] FROM Master..SysDatabases where DBId>4 ORDER BY Name"; 6  7             SqlDataAdapter da = new SqlDataAdapter(sql,conn); 8             DataSet ds = new DataSet(); 9             da.Fill(ds, "tb");10 11             cmbDBs.DisplayMember = "Name";12             cmbDBs.ValueMember = "Name";13             cmbDBs.DataSource = ds.Tables[0].DefaultView;14         }15 16         private void cmbDBs_SelectedIndexChanged(object sender, EventArgs e)17         {18             string strconnection = "server=" + txtServiceIP.Text.Trim() + ";uid=" + txtUid.Text.Trim() + ";pwd=" + txtPwd.Text.Trim();19             conn = new SqlConnection(strconnection);20             string sql = string.Format("Select Name FROM {0}.dbo.SysObjects Where XType='U' ORDER BY Name ", cmbDBs.SelectedValue.ToString());21 22             SqlDataAdapter da = new SqlDataAdapter(sql, conn);23             DataSet ds = new DataSet();24             da.Fill(ds, "tb");25             cmbTables.DisplayMember = "Name";26             cmbTables.ValueMember = "Name";27             cmbTables.DataSource = ds.Tables[0].DefaultView;28         }

另外在绑定时最好将这样写(个人觉得)

1 cmbTables.DisplayMember = "Name";2 cmbTables.ValueMember = "Name";3 cmbTables.DataSource = ds.Tables[0].DefaultView;

在默认的情况下combobox控件是可以自己手动输入的,如果想让它只读则只需改变DropDownList属性为DropDownList便可以了。

转载于:https://www.cnblogs.com/zgshi/archive/2012/01/19/2326125.html

WinForm中Combobox绑定值问题相关推荐

  1. WinForm中ComBoBox绑定显示值和实际值

    在ASP.NET中ComBoBox可以绑定显示值和实际值,但是在Winform中却是没有的(通过DataSource绑定数据源的时候是可以的,但是有null值和空值的限制) (所有代码均从实际项目中截 ...

  2. WinForm 中ComboBox 绑定总结

    1. DataTable 用DataTable直接绑定,只需要设置DataSource.DisplayMember.ValueMember三个属性即可. Code this.cmbConsumeSup ...

  3. WinForm中ComboBox绑定数据的用法

    DataTable table= BLLPackageCategory.SelectType();            comboBox1.ValueMember = "Id"; ...

  4. c#(winform)中ComboBox和ListBox添加项完全解决

    c#(winform)中ComboBox和ListBox添加项完全解决 c#(winform)中ComboBox和ListBox添加项完全解决 刚开始用.net 的winform开发,发现好些控件都很 ...

  5. delphi中combobox键值对

    delphi中combobox键值对 2010-09-13 10:46:51|  分类: 默认分类 |  标签: |字号大中小 订阅 1.添加键值对: cbb1.Items.AddObject('显示 ...

  6. WinForm 中 comboBox控件之数据绑定

    http://www.cnblogs.com/peterzb/archive/2009/05/30/1491923.html 下面介绍三种对comboBox绑定的方式,分别是泛型中IList和Dict ...

  7. Winform中DataGridView绑定IList数据源后的排序

    首先,实现ICompare接口 public class ObjectPropertyCompare<T> : IComparer<T> { private PropertyD ...

  8. Ext.net中ComboBox如何绑定数据库中的值

    今天在项目中再次碰到了问题,就是Combobox中的值如果是直接绑定很简单.简单添加项就行了.代码如下: <ext:ComboBox ID="ComBox_SecretsLevel&q ...

  9. WinForm下ComboBox获取绑定对象集的SelectedValue补充

    在上文<WinForm下ComboBox设定SelectedValue总结>中,我列举了出现不能正常获取SlectedValue的一些方法.原文写得比较乱,引起读者的理解分歧,在此表示歉意 ...

最新文章

  1. 如何改变computed执行_企业管理|执行力差的企业一般有这几个点没做好
  2. js动态给当前点击元素添加css类
  3. Hadoop的学习前奏(一)——在Linux上安装与配置Hadoop
  4. 8种Python字符串拼接的方法,你知道几种?
  5. python停止运行tensorflow_Tensorflow 开启训练后卡死
  6. 【2015年第4期】大数据时代的数据挖掘 —— 从应用的角度看大数据挖掘(上)...
  7. Java 继承学习笔记
  8. oracle登录总结
  9. chm 转 html 带索引,chm 的项目文件中包含创建 chm 文件所需的HTML文件信息、目录表文件信息、索引文件信息、窗口属 - 试题答案网问答...
  10. vue 中 v-if 和 v-for 混用时应该注意的事项
  11. STC学习:导航按键与数字按键综合控制数码管
  12. Python基本图形绘制:turtle库
  13. 卸载oracle10g教程,卸载Oracle10g步骤
  14. 1206_MISRA_C规范学习笔记_Rule 10.1 Rule 10.2
  15. 没有巨头公司做内容支撑 剪辑软件公司小影科技上市后能跑多远?
  16. 针对Windows10下EPLAN2.7频繁重启的解决办法
  17. Photoshop修图的常用方法与技巧一
  18. 剑已配好,我们江湖见
  19. mix2线刷开发板救砖_小米MIX 2手机一键线刷救砖教程,轻松刷回官方系统
  20. [Git]git命令

热门文章

  1. 一个 提高SQL 查询的讨论帖
  2. R语言实现多线性回归模型预测时间序列数据 MLR models in R
  3. 一套简约漂亮的响应式博客园主题皮肤分享给你们(一)
  4. 【51NOD1287】加农炮
  5. 一幅画十六芒星盾---程序员or艺术家
  6. twitter 监控登陆活动
  7. Rootkit Hunter Sourcecode Learning
  8. 斐波纳契数列递归和非递归算法
  9. 来自ChinaUnix的对Linux rc.sysinit, rc, functions脚本的分析和Linux启动分析
  10. poj2175费用流消圈算法