填充DataGridViewComboBoxColumn运行时

时间:2010-06-08 12:08:31

标签: c# datatable

我有这个问题: 我有一个datagridview从db读取数据,我希望,对于一个整数列使用组合框来选择一些值... 我使用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";

但是当程序启动时(在此代码之后),将显示以下消息: error http://www.ghiboz.info/shots/4a4fe5fd.png

1 个答案:

答案 0 :(得分:1)

自己解决:这是解决方案:

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

我希望这对每个人都有用!