none
DataGridView.DataSource()绑定数据源为什么会改变DataGridView的结构 RRS feed

  • 问题

  • 我在窗体上为DataGridView添加好了列,然后用List<T>泛型集合作为DataGridView.DataSource()的数据源,它为什么会自动找到相应的列进行添加?然而我再用DataTable作为DataGridView.DataSource()的数据源重新绑定一次,它却会把列标题都清空!!!这是为什么?

    例如以下代码:

    //先实例化一张表,
    DataTable table=new DataTable();
    ...//向表中添加数据代码省略
    //作为DataGrideView的数据源绑定,可以按照事先定义好的列自动显示到DataGrideView控件里面
    dgvList.DataSource = table;
    //创建一个List泛型集合。
    List<Person> list=new List<Person>();
    //重新作为DataGrideView的数据源绑定,为什么会把搭建窗体的时候添加的列全部清除掉
    dgvList.DataSource = list;


    • 已编辑 -迷- 2012年4月13日 15:40
    2012年4月12日 11:47

答案

  • dataGrid的列自动生成,如果数据来源中存在列,则会自动添加,重新绑定数据源时,也会重新执行,所以dataGrid会重新绑定,也就重新生成列,原来的数据都不会存在了
    2012年4月19日 6:56

全部回复

  • Hi -迷-,

      你能否贴出你具体的代码,以便我们能够定位错误和帮你分析代码内的问题?


    Jason Wang [MSFT]
    MSDN Community Support | Feedback to us

    2012年4月13日 6:31
    版主
  •            
    //先实例化一张表,
    DataTable table=new DataTable();
    ...//向表中添加数据代码省略
    //作为DataGrideView的数据源绑定,可以按照事先定义好的列自动显示到DataGrideView控件里面
    dgvList.DataSource = table;
    //创建一个List泛型集合。
    List<Person> list=new List<Person>();
    //重新作为DataGrideView的数据源绑定,为什么会把搭建窗体的时候添加的列全部清除掉
    dgvList.DataSource = list;

    2012年4月13日 15:38
  • dataGrid的列自动生成,如果数据来源中存在列,则会自动添加,重新绑定数据源时,也会重新执行,所以dataGrid会重新绑定,也就重新生成列,原来的数据都不会存在了
    2012年4月19日 6:56