簡體   English   中英

DataGridView ComboBox 列不接受新值

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

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