Заполните DataGridViewComboBoxColumn runtime - PullRequest
1 голос
/ 08 июня 2010

У меня есть эта проблема: у меня есть datagridview, который читает данные из БД, и я хочу, чтобы для целочисленного столбца использовался комбинированный список, чтобы выбрать некоторые значения ... Я изменил столбец, используя тип DataGridViewComboBoxColumn и после, в initв следующем виде:

DataTable dt = new DataTable("dtControlType");
dt.Columns.Add("f_Id");
dt.Columns.Add("f_Desc");
dt.Rows.Add(0, "none");
dt.Rows.Add(1, "value 1");
dt.Rows.Add(2, "value 2");
dt.Rows.Add(3, "value 3");

pControlType.DataSource = dt;
pControlType.DataPropertyName = "pControlType";
pControlType.DisplayMember = "f_Desc";
pControlType.ValueMember = "f_Id";

, но когда программа запускается (после этого кода), появляется это сообщение: ошибка http://www.ghiboz.info/shots/4a4fe5fd.png

1 Ответ

1 голос
/ 08 июня 2010

решил сам: вот решение:

public class HGrid
{
    public static void MakeComboBoxColumn(ref DataGridViewComboBoxColumn col, List<string> values)
    {
        DataTable dt = new DataTable();
        dt.Columns.Add("f_Id").DataType = typeof(Int32);
        dt.Columns[0].DataType = typeof(Int32);
        dt.Columns.Add("f_Desc");
        dt.Columns[1].DataType = typeof(string);


        for (int i = 0; i < values.Count; i++)
        {
            dt.Rows.Add(i, values[i]);
        }

        col.DataSource = dt;
        col.DisplayMember = dt.Columns[1].ColumnName;
        col.ValueMember = dt.Columns[0].ColumnName;
    }
}

и вот использование:

List<string> lControlType = new List<string>();
lControlType.Add("Semplice");
lControlType.Add("Esteso");
HGrid.MakeComboBoxColumn(ref pControlType, lControlType);

Надеюсь, это будет полезно всем!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...