1、清dataset
2、重新添加datagrid的绑定列
3、重新执行绑定方法

解决方案 »

  1.   

    不要用Clear方法,因为它只是清除表的数据,没有删掉表.应该直接用Reset方法重置DataSet的状态.ds.Reset(); //ds.Clear();
      

  2.   

    应该是DataGridTableStyle的原因,
    你绑定的表示同一个,不过字段少了一些,而DataGrid中的对应的DataGridTableStyle没有变化,它的MappingName属性还是那个DataSet里的表名,所以出现楼主上面的情况。建议楼主加上一个新的,或者把旧的去掉。
        DataGridTableStyle myTableStyle = new DataGridTableStyle();
        myTableStyle.MappingName = "yourTableName";
        DataGridColumnStyle myColumnStyle1 = new DataGridTextBoxColumn();
        myColumnStyle1.MappingName = "a";
        myColumnStyle1.HeaderText = "显示字段a";
        DataGridColumnStyle myColumnStyle2 = new DataGridTextBoxColumn();
        myColumnStyle2.MappingName = "b";
        myColumnStyle2.HeaderText = "显示字段b";
        DataGridColumnStyle myColumnStyle3 = new DataGridTextBoxColumn();
        myColumnStyle3.MappingName = "c";
        myColumnStyle3.HeaderText = "显示字段c";
    将这三个DataGridColumnStyle添加到TableStyle中:
        myTableStyle.GridColumnStyles.Add(myColumnStyle1);
        myTableStyle.GridColumnStyles.Add(myColumnStyle2);
        myTableStyle.GridColumnStyles.Add(myColumnStyle3);
    最后将TableStyle添加到DataGrid中:
        dataGrid1.TableStyles.Add(myTableStyle);
    如果不增加就把多余的DataGridColumnStyle从DataGridTableStyle 对象中去掉。
    使用myTableStyle.GridColumnStyles.Remove或RemoveAt之类的方法。
      

  3.   

    to zhzuo(秋枫)
    我测试过了,如果使用Clear方法就会出现楼主的情况,使用Reset就不会.
      

  4.   

    clear方法是用删除dataset中所有行来清除dataset,用clear方法当然会出现楼主的情况
    reset就不一样了,它是把dataset重置为初始状态,所以就不会出现楼主说的那种情况
      

  5.   

    要先删除datagrid上所有的行
    在绑定
      

  6.   


    没错,Reset()将 DataSet 重置为其初始状态,再重新绑定用一个新DataSet 更好
      

  7.   

    我也觉得用DataGridTableStyle可以很好的完成他,不过要记得Clear()
      

  8.   

    谢谢各位的回答,之后我也发现了这个问题,由于clear()是table的方法,所以他只是清空了这表datatable的数据,用reset肯定是行的,但由于我这个dataset里还有其他datatable存在,所以不能使用reset(),我现在采用了ds.tables.remove()来解决了。