【问题标题】:c# how to set several combobox column in datagridviewc#如何在datagridview中设置几个combobox列
【发布时间】:2014-10-16 13:10:24
【问题描述】:

我已经能够在 datagridview 中创建一个现有的列组合框列,我该如何为多个列做呢?另外,如何在组合框项目中添加现有的不同记录?用户将能够从组合框项目中选择值或编写自己的值。到目前为止,我的代码是:

            dgvLoadTable.DataSource = null;
            var context = new CadAdminEntities();
            var TableName = cboSelectTable.Text.ToString();
            var rawData = context.GetType().GetProperty(TableName).GetValue(context, null);
            var truncatedData = ((IQueryable<object>)rawData).Take(0);
            var source = new BindingSource { DataSource = truncatedData };
            dgvLoadTable.DataSource = source;
            dgvLoadTable.ReadOnly = false;
            dgvLoadTable.AllowUserToAddRows = true;

            DataGridViewComboBoxCell dgvCol = new DataGridViewComboBoxCell();

            for (int row= 0; row < dgvLoadTable.Rows.Count; row++)
            {
             for (int col = 0; col < dgvLoadTable.Columns.Count; col++)
                   {
                       if(col==2||col==4)
                       this.dgvLoadTable[col,row] = dgvCol;
                 //This part throws error, as there is only one combobox
                   }
            }

            dgvLoadTable.Refresh();

【问题讨论】:

    标签: c# entity-framework datagridview combobox


    【解决方案1】:

    这很容易解决:

    this.dgvLoadTable[col, row] = new DataGridViewComboBoxCell();
    

    将为每个案例创建一个新的 ComboBoxCell。

    你可以删除该行

    DataGridViewComboBoxCell dgvCol = new DataGridViewComboBoxCell();
    

    请注意,由于您有一个 Databound DGV 并且列可能是自动创建的,因此您应该记住,通常需要在设置 DataSource 之前关闭该自动化并手动创建所有列..

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-23
      • 2017-11-02
      • 1970-01-01
      • 1970-01-01
      • 2011-02-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多