foreach (DataRowView drv in dvRecieve)
{
     dsChargeDetail.T_CO_FEEDTLRow row = drv.Row as dsChargeDetail.T_CO_FEEDTLRow;    if (!row.IsIS_AUTO_ROWNull() && row.IS_AUTO_ROW == true)
       row.Delete();
}
这段代码,当我循环到倒数第二次的时侯程序删掉一行,然后还剩下一行数据,但是最后剩下的这一条数据自动变用DELETE状态了,请教高人为什么会这样?

解决方案 »

  1.   

    dsChargeDetail.T_CO_FEEDTLRow 是一个表dvRecieve 是一个DataRowView 
      

  2.   

    是编辑状态没结束的问题吗?
    试试循环完后 视图结束编辑状态 焦点放到其它控件上
    为何要循环删除行,直接清空不行吗?dvRecieve.Table.Clear();
      

  3.   

    不要用foreach,从后向前删,从前向后就是会有这样的问题
    for(int i=dvRecieve.Length-1;i>=0;--i)
    {
    DataRowView drv = dvRecieve[i];dsChargeDetail.T_CO_FEEDTLRow row = drv.Row as dsChargeDetail.T_CO_FEEDTLRow;if (!row.IsIS_AUTO_ROWNull() && row.IS_AUTO_ROW == true)
    row.Delete();
    }
    这样就OK了。