积极答复者
DataGridView与BindingSource绑定时,自动添加Column有没有事件来自行确定Column的类型

问题
-
众所周知,当DataGridView设置了BindingSource,一旦BindingSource有DataSource和DataMember,则DataGridView会自动添加每个Field的Column,如果是图片字段会添加DataGridViewImageColumn,如果是布尔字段会添加DataGridViewCheckBoxColumn
如何让DataGridView添加Column时,指定为我需要的Column类型。例如我自定义了新的Column类型,或者ComboboxColumn等。我需要用代码实现,而不是在设计阶段修改Column类型
答案
-
你好,
你可以通过添加新列的方式来实现。如果添加的特定类型的列需要绑定数据库的数据,只需将该列的DataPropertyName 设置为数据源属性的名称即可。
例如,你需要添加类型为CheckBox的列,可以参考如下代码:
DataGridViewCheckBoxColumn DGcheckbox = new DataGridViewCheckBoxColumn(); //添加类型为checkbox的列 DGcheckbox.DataPropertyName = "IsChecked"; //绑定数据库中“IsChecked”列知此列 DGcheckbox.Name = "DGcheckbox"; DGcheckbox.HeaderText = "IsChecked";//设置Datagridview中该列的显示名称 dataGridView1.Columns.Add(DGcheckbox); //将新列添加到Datagridview中
不同类型的列对应相应的类,请参考:
Button列:DataGridViewButtonColumn
TextBox列:DataGridViewTextBoxColumn
ComboBox列:DataGridViewComboBoxColumn
Image列:DataGridViewImageColumn
Link列:DataGridViewLinkColumn
希望对你有所帮助。
Lisa Zhu [MSFT]
MSDN Community Support | Feedback to us
- 已编辑 Lisa ZhuModerator 2012年10月4日 2:23
- 已标记为答案 Lisa ZhuModerator 2012年10月10日 10:16
-
你好,
1.如果你希望把数据填充到新增的column中得话,需要在添加新列的时候绑定 DataPropertyName。然后 bindingsource。如:
DataGridViewTextBoxColumn DGTextbox = new DataGridViewTextBoxColumn(); //添加类型为checkbox的列 DGTextbox.DataPropertyName = "ID"; //绑定数据库中“ID”列知此列 DGTextbox.Name = "DGTextbox"; DGTextbox.HeaderText = "ID";//设置Datagridview中该列的显示名称 DGTextbox.DataPropertyName = "ID"; dataGridView1.Columns.Add(DGTextbox); //将新列添加到Da //从数据库中读取数据至dt中 ..... dataGridView1.DataSource = dt;
2.首先,如果你new 一个DGV 或者从工具箱中添加一个DGV的话,是不会自动生成column的。
假如你自己添加了一些了columns,但是这并不影响代码添加coulumn的使用。
顺便提一句,如果你有新问题,请开新帖提问,谢谢合作。
Lisa Zhu [MSFT]
MSDN Community Support | Feedback to us
- 已标记为答案 Lisa ZhuModerator 2012年11月20日 1:22
全部回复
-
你好,
你可以通过添加新列的方式来实现。如果添加的特定类型的列需要绑定数据库的数据,只需将该列的DataPropertyName 设置为数据源属性的名称即可。
例如,你需要添加类型为CheckBox的列,可以参考如下代码:
DataGridViewCheckBoxColumn DGcheckbox = new DataGridViewCheckBoxColumn(); //添加类型为checkbox的列 DGcheckbox.DataPropertyName = "IsChecked"; //绑定数据库中“IsChecked”列知此列 DGcheckbox.Name = "DGcheckbox"; DGcheckbox.HeaderText = "IsChecked";//设置Datagridview中该列的显示名称 dataGridView1.Columns.Add(DGcheckbox); //将新列添加到Datagridview中
不同类型的列对应相应的类,请参考:
Button列:DataGridViewButtonColumn
TextBox列:DataGridViewTextBoxColumn
ComboBox列:DataGridViewComboBoxColumn
Image列:DataGridViewImageColumn
Link列:DataGridViewLinkColumn
希望对你有所帮助。
Lisa Zhu [MSFT]
MSDN Community Support | Feedback to us
- 已编辑 Lisa ZhuModerator 2012年10月4日 2:23
- 已标记为答案 Lisa ZhuModerator 2012年10月10日 10:16
-
你好,
1.如果你希望把数据填充到新增的column中得话,需要在添加新列的时候绑定 DataPropertyName。然后 bindingsource。如:
DataGridViewTextBoxColumn DGTextbox = new DataGridViewTextBoxColumn(); //添加类型为checkbox的列 DGTextbox.DataPropertyName = "ID"; //绑定数据库中“ID”列知此列 DGTextbox.Name = "DGTextbox"; DGTextbox.HeaderText = "ID";//设置Datagridview中该列的显示名称 DGTextbox.DataPropertyName = "ID"; dataGridView1.Columns.Add(DGTextbox); //将新列添加到Da //从数据库中读取数据至dt中 ..... dataGridView1.DataSource = dt;
2.首先,如果你new 一个DGV 或者从工具箱中添加一个DGV的话,是不会自动生成column的。
假如你自己添加了一些了columns,但是这并不影响代码添加coulumn的使用。
顺便提一句,如果你有新问题,请开新帖提问,谢谢合作。
Lisa Zhu [MSFT]
MSDN Community Support | Feedback to us
- 已标记为答案 Lisa ZhuModerator 2012年11月20日 1:22