WinForm中Combobox绑定值问题
生活随笔
收集整理的這篇文章主要介紹了
WinForm中Combobox绑定值问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
好久沒寫過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绑定值问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数学小知识:勾股数
- 下一篇: Js 原型对象与原型链(转)