[英]DataGridView ComboBox column not accepting new values
我的 Windows 窗體應用程序中有一個DataGridView
控件,它允許用戶編輯產品列表。 要編輯產品類別,我希望用戶添加新條目或從之前已經輸入的條目中進行選擇。 為了實現這一點,我添加了一個綁定到DataSource
的組合comboBox
列,該DataSource
從產品表中獲取不同的類別名稱。 在其他一些 SO 問題的幫助下,我能夠使用以下代碼使這個組合comboBox
可編輯:
private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
if (dataGridView1.CurrentCell.ColumnIndex == CategorySelector.Index)
{
ComboBox combo = e.Control as ComboBox;
if (combo == null)
return;
combo.DropDownStyle = ComboBoxStyle.DropDown;
}
}
但問題是,當我嘗試編輯類別組合comboBox
列並添加未列出的新類別時,當我切換到其他單元格時,它會切換回現有產品的舊類別項目或新產品的空白。 請告訴我如何通過此組合comboBox
列添加新類別?
最后我自己解決了。 我實現了LostFocus
的事件comboBox
,我添加的代碼更新綁定DataSet
的新項目。
該項目已成功添加,但仍然存在一個問題。 添加后未選擇該項目。 ComboBox
仍會重置為之前的選擇。 但是,我可以手動選擇新項目。 但是如果你能解決這個錯誤,它就會成為用戶更好的用戶體驗。 以下是我如何實現新項目添加:
private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
if (dataGridView1.CurrentCell.ColumnIndex == CategorySelector.Index)
{
ComboBox combo = e.Control as ComboBox;
if (combo == null)
return;
combo.DropDownStyle = ComboBoxStyle.DropDown;
combo.LostFocus += combo_LostFocus;
}
}
void combo_LostFocus(object sender, EventArgs e)
{
ComboBox c = (ComboBox)sender;
if (c.FindStringExact(c.Text.Trim().ToLower()) == -1)
{
inventoryCategorySet.Tables[0].Rows.Add(c.Text.Trim().ToLower());
inventoryCategorySet.AcceptChanges();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.