如:
<ASP:IMAGEBUTTON RUNAT="server" IMAGEURL="Delete.gif" COMMANDNAME="Delete" COMMANDARGUMENT='<%# Container.DataItem("ID") %>' ID="btnDelete"></ASP:IMAGEBUTTON>
这里的commandArgument是命令参数,Container.DataItem("ID") 则是记录的关键字。在事件处理程序中:
Protected Sub grd_ItemCommand(ByVal sender As System.Object, ByVal e As DataGridCommandEventArgs)
  Select Case e.CommandName
  Case "Delete"
      objEntity.Delete(CInt(e.CommandArgument))
删除方法的参数是这个关键字

解决方案 »

  1.   

    当你删除了一条记录后,你应该把DataGrid重新绑定一遍。那样的话,就不会再出现你所说的问题了
      

  2.   

    非常感谢dotage的热心解答,您说的非常正确,我确实是使用行号来删除的,实际上,因为我不是很清楚删除之后怎么更新到数据库,例如,
      

  3.   

    dim strcnn as string="provider=microsoft.jet.oledb.4.0;" & _
                         "data source=mypath\mydata.mdb"
    dim objcnn as new oledbconnection(strcnn)
    dim strsql as string="select * from tableA join tableB"
    dim objadapter as new oledbdataadapter(strsql,objcnn)
    dim ds as new dataset
    objadapter.fill(ds,"mylist")
    datagrid1.datasource=ds.tables("mylist").defaultview
    datagrie1.databind上边是我的页面显示的可以编辑的datagrid1,因为dataset不能对多表编辑后更新至数据库,所以我在下边又建立单表的,取值是从上边的datagrid1里边选定的行取值,然后执行删除操作,我不知道是不是有更好的方法能够实现。
    strsql="select * from tableA where(a=b and c=d)"
    其中假定b,d是从上边得到的值。
    objadapter=new oledbdataadapter(strsql,objcnn)
    objadapter.fill(ds,"mylistA")
    那么实际上,ds.tables("mylistA")里边应该只有一条记录,那么我就执行操作
    ds.tables("mylistA").rows(0).delete
    然后删除
    ds.tables("mylist").rows(row).delete
    再次执行bind
    datagrid1.datasource=ds.tables("mylist").defaultview
    datagrid1.databind
    最后对单表执行更新至数据库,此段就略写了,
    *****************************************
    我不知道我上边的做法是否欠缺,或者你们有更好的方法可以共享一下。多谢!