none
DataGridView与BindingSource绑定时,自动添加Column有没有事件来自行确定Column的类型 RRS feed

  • 问题

  • 众所周知,当DataGridView设置了BindingSource,一旦BindingSource有DataSource和DataMember,则DataGridView会自动添加每个Field的Column,如果是图片字段会添加DataGridViewImageColumn,如果是布尔字段会添加DataGridViewCheckBoxColumn

    如何让DataGridView添加Column时,指定为我需要的Column类型。例如我自定义了新的Column类型,或者ComboboxColumn等。我需要用代码实现,而不是在设计阶段修改Column类型

    2012年10月3日 10:17

答案

  • 你好

    你可以通过添加新列的方式来实现。如果添加的特定类型的列需要绑定数据库的数据,只需将该列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


    2012年10月4日 2:22
    版主
  • 你好,

    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

    2012年11月16日 10:28
    版主

全部回复

  • 你好

    你可以通过添加新列的方式来实现。如果添加的特定类型的列需要绑定数据库的数据,只需将该列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


    2012年10月4日 2:22
    版主
  • 这些新增column的代码,是在设置bindingsource之后吗

    那么我在设置完bindingsource之后,是不是先要将自动生成的column删掉,再自行添加每种column

    2012年11月16日 10:01
  • 你好,

    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

    2012年11月16日 10:28
    版主