簡體   English   中英

如何在C#中編輯數據綁定組合框

[英]How to edit databound combobox in c#

在我的winForm應用程序中,我在datagridview中添加了數據綁定組合框列。 用戶需要能夠從下拉列表中選擇一項或在組合框中寫入內容。 但這不會讓我在設置數據源時在組合框中編寫內容。 這是我的代碼:

var entityModel= new AdminEntities();
var filterPractice = (from b in entityModel.FILTER where b.PRACTICE != null select b.PRACTICE).Distinct().OrderBy(y => y);
dgvCboColumn(filterPractice, "PRACTICE");
private void dgvCboColumn(dynamic item, string colName)
    {
        int i = dgvLoadTable.Columns[colName].Index;
        DataGridViewComboBoxColumn dgvCol = new DataGridViewComboBoxColumn();
        dgvCol.DataSource=item;
        dgvCol.DataPropertyName = colName;
        dgvLoadTable.Columns.Insert(i, dgvCol);
        dgvLoadTable.Columns[i].HeaderText = dgvLoadTable.Columns[i + 1].HeaderText;
        dgvLoadTable.Columns[i + 1].Visible = false;
        dgvLoadTable.Columns.RemoveAt(i + 1);
    }
  private void HandleEditShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
    {
        var cbo = e.Control as ComboBox;
        if (cbo == null)
        {
            return;
        }

        cbo.DropDownStyle = ComboBoxStyle.DropDown;
        cbo.Validating -= HandleComboBoxValidating;
        cbo.Validating += HandleComboBoxValidating;
    }
    private void HandleComboBoxValidating(object sender, CancelEventArgs e)
    {
        var combo = sender as DataGridViewComboBoxEditingControl;
        if (combo == null)
        {
            return;
        }
        if (!combo.Items.Contains(combo.Text)) 
        {
            var comboColumn = this.dgvLoadTable.Columns[this.dgvLoadTable.CurrentCell.ColumnIndex] as DataGridViewComboBoxColumn;
            combo.Items.Add(combo.Text);
            comboColumn.Items.Add(combo.Text);
            this.dgvLoadTable.CurrentCell.Value = combo.Text;
        }
    }

誰能告訴我如何使組合框可編輯?

您可以使用Oledb或Ado記錄集手動填充項目數據源,也可以使用for循環手動填充組合框。因此,基本上,您還可以編輯項目。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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