foreach( DataRow rowr in ds.Tables[0].Rows )
{
if( int.Parse(rowr["item_id"].ToString()) == 2267 )
{
ds.Tables[0].Rows.Remove( rowr );
}
}return ds;    //这句写到循环外试以下!!!

解决方案 »

  1.   

    这句在下面已经写啦!
    private dataset f1()

      ......
      foreach( DataRow rowr in ds.Tables[0].Rows )
        {
           if( int.Parse(rowr["item_id"].ToString()) == 2267 )
           {
              ds.Tables[0].Rows.Remove( rowr );
              //return ds;
            }
         }
         return ds;
    }

      

  2.   

    应该是没有问题的,小修改一下,再测一下看看
    foreach( DataRow rowr in ds.Tables[0].Rows )
    {
    if( (int)rowr["item_id"] == 2267 )
    {
       rowr.Delete();
    }
    }
    ds.AcceptChanges();
      

  3.   

    不能用For或Foreach来做,因为在删除多行时,循环上限已经变了,在循环内部是不能改循环变量的。所以只能像下面那样,烦一点了。
    int i = 0;while (i<=ds.Tables[0].Rows.Count -1)

    if( (int)ds.Tables[0].Rows[i]["item_id"] == 2267 )
    {
     ds.Tables[0].Rows[i].Delete();
    }
    else
    {
      i++;
    }
    }ds.AcceptChanges();
      

  4.   

    gkwww(奔放)兄弟的方法好象不行,谢谢