mydataset.Tables("user").Rows(3).Delete()这个是删除数组中第四条的记录,,可是我想删除id=8的记录应该怎么写啊?(因为id是自动编号的,而且如果删除了一些记录后,id号的8就不是数组中的第八条了,,,
id   name 
1     aa
2     ss
6     dd
7     vv
8     ee
这里的id=8实际是数组中的4,,我在一篇文章里看到如下的代码
mydatarow = mydatatable.Rows.Find("993-21-3427")
mydatarow.Delete()但是我在Find后加上了id的数值却不可以阿。请问这个find应该怎么用阿?

解决方案 »

  1.   

    可以使用 DataView 的 Find 方法来查找包含特定值的行索引。可以传递单个值或数组值给 Find 方法。要传递单个值给 Find 方法,使用如下语句即可:  intItemIndex = MyDataView.Find("Smith")如果找到了 "Smith" ,包含该名称的行索引就被赋值给 intItemIndex 。要传递多个值给 Find 方法,使用如下语句:  Dim arrValues(2) As Object
      arrValues(0) = "Smith"
      arrValues(1) = "Robert"
      intItemIndex = dvwDataView.Find(" arrValues )如果找到了 "Robert Smith" , Find方法就返回该行的索引。否则,返回 -1 ,表示没有找到匹配的行。如果找到多个匹配的行,只返回其中一个匹配行的索引。Find 方法要求 DataTable 中的行以传递给该方法的参数相同的顺序排序。比如,如果要查找某个姓的作者,这个数据表就必须以作者的姓来排序。给个例子代码:
    <%@ Page Language="C#" %>
    <%@ Import Namespace="System.Data" %>
    <%@ Import Namespace="System.Data.SqlClient" %><%
    DataSet dstAuthors;
    SqlConnection conPubs;
    SqlDataAdapter dadAuthors;
    DataView dvwAuthors;
    Object[] arrValues = new Object[2];
     
    // Grab Authors Table
    dstAuthors = new DataSet();
    conPubs = new SqlConnection( @"Server=localhost;Integrated Security=SSPI;Database=Pubs" );
    dadAuthors = new SqlDataAdapter( "Select * From Authors", conPubs );
    dadAuthors.Fill( dstAuthors, "Authors" );// Create DataView
    dvwAuthors = dstAuthors.Tables[ "Authors" ].DefaultView;
    dvwAuthors.Sort = "au_lname, au_fname";// Find Ann Dull
    arrValues[0] = "Dull";
    arrValues[1] = "Ann";
    int intRowIndex = System.Convert.ToInt32(dvwAuthors.Find (arrValues) );
    // Display Phone Number
    if ( intRowIndex != -1 ) 
    {
      Response.Write( dvwAuthors[ intRowIndex ]["Phone"]);

    else
    {
      Response.Write( "Can't find Ann Dull :)" );
    }
    %>
     
      

  2.   

    mydataset.Tables("user").Rows(3).Delete()
    如果用这个代码,,修改Rows(3)括号中的内容,能不能做到删除id=xxx的记录呢?就好像mydataset.Tables("user").Rows(id=8).Delete()
      

  3.   

    在使用 Delete 方法后,RowState 变成“已删除”。在您调用 AcceptChanges 之前,它一直保持“已删除”。所以只有调用AcceptChanges之后才真正删除,这时datatable的rows数目才减少。
      

  4.   

    ??什么意思啊???还是不能解决根据id删除记录阿,,难道让我用SQL先筛选出所要删除的记录,然后再用DATASET进行删除??