在DataGridView中将值设置为ComboBoxCell

时间:2013-12-26 21:10:01

标签: c# datagridviewcomboboxcell

我想为实际上是组合单元的单元格设置一个值。我为我的另一个项目做了这个,但现在以同样的方式,不起作用!!

这是我的代码

        //dgExcel is my datagridview

        var cmb = (DataGridViewComboBoxColumn)dgExcel.Columns[1];
        cmb.DataSource = sucTurleri; //its a list 
        cmb.DisplayMember = "SucTuru";
        cmb.ValueMember = "Id";

此代码正在向网格添加行

var Konumlar = ExcelYardimcisi.KonumlariExceldenAl(dg.FileName);

foreach (var konum  in Konumlar)
{

  dgExcel.Rows.Add(konum.KonumAdi, sucTurleri[0].SucTuru, DateTime.Now.ToShortDateString());
}

但是我收到了一个错误,我使用了这个

 foreach (var konum  in Konumlar)
 {

  dgExcel.Rows.Add(konum.KonumAdi, null, DateTime.Now.ToShortDateString());

  DataGridViewComboBoxCell cbox = (DataGridViewComboBoxCell)dgExcel.Rows[dgExcel.Rows.Count - 1].Cells[1];

   cbox.Value = sucTurleri[0].SucTuru;

}

,错误是

enter image description here

1 个答案:

答案 0 :(得分:2)

您的数据绑定部分非常好。问题出在dgExcel.Rows.Add()方法上。 以下是示例代码:

    List<Item> items = new List<Item>();
    items.Add(new Item() { Name = "One", Id = 1 });
    items.Add(new Item() { Name = "Two", Id = 2 });
    var cbo = dataGridView1.Columns[1] as DataGridViewComboBoxColumn;
    cbo.DataSource = items;
    cbo.ValueMember = "Id";
    cbo.DisplayMember = "Name";

    dataGridView1.Rows.Add("test", items[1].Id);
    ...

    public class Item
    {
        public string Name { get; set; }
        public int Id { get; set; }
    }

由于DataGridViewComboBoxColumn是数据绑定的,因此您必须按ValueMember设置值,在我的情况下items[1].Id。你也必须在你的代码中使用它。