现在我有一个DataGridView绑定到DataTable,它运行良好。我需要在DataGridView上做的是在最后包含一个新列,它是一个ComboBox,它将动态地根据行的键值进行操作。
我的列是ID,名称和计数。第4列将是一个ComboBox,它接受一个ID并根据该下拉列表创建值。我目前有一个自定义的ComboBox,它在其构造函数中获取一个ID并以这种方式填充它,但我无法找到将其放入DataGridView的方法。所以,我创建了一个自定义ComboBox控件的副本并将其转换为DataGridViewComboBoxCell,但我仍然无法弄清楚如何将其动态绑定到表单。我已经浏览了互联网,发现了一些例子,但不完全是我想做的事情。
This link显示了我想要做的事情,除了我使用的是C#而不是VB。有什么想法吗?
答案 0 :(得分:3)
以下是我刚刚尝试的内容:
DataTable dt = new DataTable();
dt.Columns.Add("Col");
dt.Rows.Add();
dt.Rows.Add();
dt.Rows.Add();
dt.Rows[0][0] = "1";
dt.Rows[1][0] = "2";
dt.Rows[2][0] = "3";
dataGridView1.DataSource = dt;
dataGridView1.Columns.Add(new DataGridViewComboBoxColumn());
List<string> lstStr = new List<string>();
lstStr.Add("1");
lstStr.Add("2");
lstStr.Add("3");
lstStr.Add("4");
((DataGridViewComboBoxCell)(dataGridView1.Rows[0].Cells[1])).DataSource = lstStr;
这是你在找什么?
答案 1 :(得分:2)
试试这个:
// Create a new Combo Box Column
DataGridViewComboBoxColumn EmpIdColumn = new DataGridViewComboBoxColumn();
// Set the DataSource of EmpIdColumn as bellow
EmpIdColumn.DataSource = myDataSet.Tables[0];
// Set the ValueMember property as done bellow
EmpIdColumn.ValueMember = myDataSet.Tables[0].Columns[0].ColumnName.ToString();
// Set the DisplayMember property as follow
EmpIdColumn.DisplayMember = EmpIdColumn.ValueMember;
答案 2 :(得分:0)
你可以采取或离开这种方式,但我处理它的方式(在VB中)是将DGV绑定到一个对象集合,其中包含一些超出我实际绑定数据的额外成员。我使用这些额外的成员作为额外的东西占位符。
我将数据源(在我的情况下是一个DB)中的元素填充到集合中,根据需要填充其他成员,然后将集合绑定到DGV。由于额外成员不是原始表的成员,我可以更改其内容。然后我不必像你想要的那样处理控件的“部分绑定”。
无论如何,另一种给猫皮肤的方法。