TmpRow[0]能找到,并有结果如下,但就是不能删除。
{XSDFiles.PubShop.Pub_Shop_CardRow}
    System.Data.DataRow: {XSDFiles.PubShop.Pub_Shop_CardRow}
    AllowUsed: "1"
    CardCode: "0005"
    CompanyCode: "YC"
    ModifyDTM: {10/11/2005}
    ShopCode: "0053"
    tablePub_Shop_Card: {XSDFiles.PubShop.Pub_Shop_CardDataTable}
private void DelRows(string cCode,string cCardName)
{//删除一记录
string strExpr,strSort; 
DataRow[] TmpRow=new DataRow[1];
DataRowView drv = (DataRowView) BindingContext[dsMasterDetail,"Pub_Shop"].Current;
strExpr = "ShopCode= '"+drv["ShopCode"]+"' and CompanyCode='"+drv["CompanyCode"]+"'";
strSort = "ShopCode DESC";
DataRow[] foundRows1;
DataRow[] foundRows2;
foundRows1=dsMasterDetail.Tables["Pub_Shop_Card"].Select(strExpr,strSort);
foundRows2=dtCard.Select("Code='"+cCode+"' and CardName='"+cCardName+"'"); object[]findVals = new object[1];
findVals[0] =foundRows1[0]["CompanyCode"];
findVals[1] =foundRows1[0]["ShopCode"];
findVals[1]=foundRows2[0]["CardCode"];
TmpRow[0] = dsMasterDetail.Tables["Pub_Shop_Card"].Rows.Find(findVals); dsMasterDetail.Tables["Pub_Shop_Card"].Rows.Remove(TmpRow[0]);
dsMasterDetail.Tables["Pub_Shop_Card"].Rows.Find(findVals).Delete();
this.BindingContext[dsMasterDetail,"Pub_Shop_Card"].EndCurrentEdit();
}

解决方案 »

  1.   

    楼主 findVals[0] =foundRows1[0]["CompanyCode"]; 
    是对应一个字段的一个值。dsMasterDetail.Tables["Pub_Shop_Card"].Rows.Find(findVals).Delete();
    这个语句怎么能找到行呢??
      

  2.   

    找到主键值用,SQL语句删除,dsMasterDetail.Tables["Pub_Shop_Card"].Rows.Remove(TmpRow[0]);
    dsMasterDetail.Tables["Pub_Shop_Card"].Rows.Find(findVals).Delete();
    这样是不能从数据库里删除数据的!
      

  3.   

    DataRow[] drs = dsMasterDetail.Tables["Pub_Shop_Card"].Select("fieldName = value");if (drs.Length > 0)
    {
      drs[0].Delete();
    }
      

  4.   

    上面朋友说的很对,这些我都知啊,打上标记后用dsMasterDetail.GetChanges()获取修写过的数据集,结果是>? dsMasterDetail.GetXml()
    "<PubShop xmlns=\"http://tempuri.org/PubShop.xsd\" />"