簡體   English   中英

組合框默認值winforms c#

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM