2010-06-08 78 views
1

我有这样的问题: 我有一个DataGridView从一个数据库中读取数据,我希望,对于一个整数列使用下拉框选择一些值... 我使用DataGridViewComboBoxColumn类型修改的列和之后,在窗体的Init这:填充DataGridViewComboBoxColumn运行

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

+0

的图像被破坏。 :) – hims056 2013-04-06 09:34:52

回答

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

我希望这将是对大家有用!