更新DataGrid的数据的大致代码:dataTable.Rows.Clear();
foreach(MyObject obj in myList)
{
   //为什么这句会卡一下?
   dataTable.Rows.Add(new object[]{obj.mybool,obj.mystring,obj.mystring}
}流程和现象:
1。绑定DataGrid到dataTable.DefaultView
2。第一次填数据(即dataTable.Rows.Count = 0)。正常
3。第二次填数据。清空dataTable.Rows。添加新数据。会在dataTable.Rows.Add()这句卡2秒多
4。以后重复步骤3,一切正常到底是为什么啊。

解决方案 »

  1.   

    MyObject是没问题的。
    我换成dataTable.Rows.Add(new object[]{true,"aa","aa"}还是会卡一下
      

  2.   

    定义dataTable的代码dataTable = new DataTable("MapperTable");
    //Enabled Column
    DataColumn dc1 = new DataColumn("是否导入",System.Type.GetType("System.Boolean"));
    dataTable.Columns.Add(dc1);
    //GroupName Column
    DataColumn dc2 = new DataColumn("分组名称",System.Type.GetType("System.String"));
    dataTable.Columns.Add(dc2);
    //ImportType Column
    DataColumn dc3= new DataColumn("导入方式",System.Type.GetType("System.String"));
    dataTable.Columns.Add(dc3);
    //DataView
    _dataView = _mapperTable.DefaultView;
    _dataView .AllowEdit = false;
    _dataView .AllowNew = false;
    _dataView .AllowDelete = false;
      

  3.   

    最好不要这样添加
    dataTable.Rows.Add(new object[]{obj.mybool,obj.mystring,obj.mystring}把添加改成如下这种形式
    DataRow dr = dataTable.NewRow();
    dr[field1] = obj.mybool;
    ...
    dataTable.Rows.Add( dr );
      

  4.   

    那么在重新填充数据的时候,通过如下
    _dataView .AllowNew = true;添加数据后再修改为
    _dataView .AllowNew = false;
      

  5.   

    不过我怀疑真正有问题的是如下这句
    dataTable.Rows.Clear();
      

  6.   

    晕。果然是_dataView .AllowNew的问题太感谢了