[英]combobox default value winforms c#
嗨,我想動態地將一些值綁定到復選框。
dataset ds = //getting emp values form database;
cbemp.ValueMember = "empid";
cbemp.DisplayMember = "empname";
cbemp.DataSource = ds.Tables["emp"];
它工作正常。 但我想補充一下
“選擇emplyoee”作為復選框的默認值。
但我的復選框直接添加了像
A1
a2
A3
像這樣。
我試過這樣的
cbemp.Items.Insert(0, "Select emplyoee");
但它不起作用
我怎么能加呢?
使用數據綁定時,無法“手動”添加或刪除項目。 使用數據綁定實現所需內容的唯一方法是在DataTable
首先插入具有所需值的行,或者通過代碼填充組合框(添加“Select employee”項,然后迭代DataTable
行以添加記錄)。
也許像這樣的東西可以工作:
// create new row for "Select employee"
DataRow row = ds.Tables["emp"].NewRow();
row["empid"] = -1;
row["empname"] = "Select employee";
// insert the row at the top of the table
ds.Tables["emp"].Rows.InsertAt(row, 0);
// do the databinding
cbemp.ValueMember = "empid";
cbemp.DisplayMember = "empname";
cbemp.DataSource = ds.Tables["emp"];
我沒有太多使用數據綁定,所以我可能沒有意識到這一點(但我相信社區會在這種情況下指出這一點)。
在數據源中插入數據是個壞主意。 它會促進破壞圖層的抽象,如果您在其他地方使用相同的數據源,可能會導致一些問題。
相反,當沒有選擇項目時,您可以輕松擴展ComboBox以顯示“請選擇”消息。
我在博客上寫了這個問題,並提供了代碼: http : //www.byteauthor.com/2010/08/inner-label-in-combobox/
我認為您必須將它添加到基礎數據表(ds.Tables [“emp”]),以便在您使用數據綁定控件時它在列表中顯示為條目。
當您的控件是數據綁定時,我認為您無法手動添加項目。
要解決此問題,您可以向數據源添加新項,也可以手動添加項。
如果ComboBoxStyle設置為DropDownList(因此用戶無法編輯組合框),那么確保用戶選擇項目的最簡單方法是設置selectedIndex = -1,您可以隨時在組合框上添加“請選擇”等。
在我的情況下(databinded組合框)我解決了這樣的問題。 當然最好的方法是Kevin Coulombe。
ComboBox.SelectedIndex = -1;
ComboBox.Text = "Please, select something";
使用一些代碼,您可以非常輕松地管理此場景。
上面接受的解決方案更好,但有時可能會派上用場的一個技巧是將“假”記錄聯合到返回數據綁定記錄集的SQL。 在這種情況下,像:
select 0 as empid, 'Please select' as empname
union
select empid, empname from emp
order by empid
當然,您必須保護數據庫不會意外地寫回“0”記錄(例如,如果用戶沒有做出選擇),但這並不太難。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.