1

実際にはコンボボックスセルであるセルに値を設定したいと考えています。私は別のプロジェクトでそれを行いましたが、今では同じように機能しません!!

ここに私のコードがあります

        //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;

}

エラーは

ここに画像の説明を入力

4

1 に答える 1

2

あなたのデータバインディング部分はかなりOKです。問題は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値を設定する必要があります。コードでもこれを行う必要があります。ValueMemberitems[1].Id

于 2013-12-26T22:33:27.120 に答える