установить значение DataGridViewComboBox Winforms C # - PullRequest
0 голосов
/ 09 мая 2018

У меня есть dataGridView, и одним из его типов столбцов является ComboBox. Этот comboBox связан с источником данных. проблема в том, что когда я устанавливаю значение в этот comboBox, используя следующую строку:

for (int i = 0; i < lstData.Count; i++)
{
   grd["ColumnName",i].Value = lstData[i].Data;
}

или используя следующую строку:

grd.Rows.Add(lstData[i].Data)

он должен показывать Short_Description (0 - Reg) вместо Report_Code (0). но он устанавливает значение как текст для выпадающего списка вместо установки значения. Чего мне не хватает в этом? Скриншоты прилагаются для справки.

enter image description here enter image description here

1 Ответ

0 голосов
/ 09 мая 2018
public partial class GridManualBind : Form
{
    //Binding Source for datagridView
    BindingSource datasource = new BindingSource();

    //Binding Source for datagridView Combobox Column
    BindingSource reportLookupBinding = new BindingSource();
    List<ManualData> list = new List<ManualData>();
    public GridManualBind()
    {
        InitializeComponent();
        dataGridView1.AutoGenerateColumns = false;
        datasource.DataSource = typeof(ManualData);
        reportLookupBinding.DataSource = typeof(ManualDataReport);

        dataGridView1.DataSource = datasource;

        // column
        dataGridView1.Columns.Add(new DataGridViewTextBoxColumn
        {
            HeaderText = "Price Type",
            DataPropertyName = "PriceType"
        });

        // As you see in the picture its configured for combo box column
        dataGridView1.Columns.Add(new DataGridViewComboBoxColumn
        {
            HeaderText = "Report Code Lookup",
            DataPropertyName = "ReportCodeLookup",
            DataSource = reportLookupBinding,
            DisplayMember = "Short_Description",
            ValueMember = "Report_Code"
        });

        //Adding Data for Combo Box data Source
        reportLookupBinding.Add(new ManualDataReport { Report_Code = 0, Short_Description = "0-Reg" });
        reportLookupBinding.Add(new ManualDataReport { Report_Code = 1, Short_Description = "1-Post" });

        list.AddRange(new ManualData[]
        {
             new ManualData { PriceType="Reg", ReportCodeLookup=0 },
             new ManualData { PriceType="Post", ReportCodeLookup=1 }
        });
        //Adding Data for grid View data Source
        datasource.Add(list[0]);
        datasource.Add(list[1]);

    }
    private void button1_Click(object sender, EventArgs e)
    {
        // you can Set the combo box value using this;
        list[0].ReportCodeLookup = 1;
        dataGridView1.Invalidate();
    }

    private class ManualData
    {
        public string PriceType { get; set; }
        public int ReportCodeLookup { get; set; }
    }

    private class ManualDataReport
    {
        public int Report_Code { get; set; }
        public string Short_Description { get; set; }
    }
}

для установки значения для ячейки поля со списком

    private void button1_Click(object sender, EventArgs e)
    {
        // you can Set the combo box value using this;
        list[0].ReportCodeLookup = 1; // depend on combo box cell value
        dataGridView1.Invalidate();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...