根据查询条件可能查到几条记录,绑定到DATAGRID里,然后在DATAGRID里操作。
 1。 比如删除无法确定在那一列。
2 。 删除后无法在绑定数据集,因为前面绑定的是前面查询的数据集
3。编辑操作也遇到同样的问题,无法确定编辑后的数据集。
那位能给个好的方法! 是在查询时写个什么特别的方法!还是有什么其他的方法

解决方案 »

  1.   

    使用带参数的存储过程,查询条件条件作为存储过程的参数,空表示忽略查询条件,这样datagrid的datasource就一致了,查询时传入查询参数,重新执行存储过程和绑定
      

  2.   

    比如说: 点击删除吧private void DataGrid1_DeleteCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
    {
      ds = (DataSet)this.ViewState["ds"];
      DataRow drDelRow = ds.Tables[0].Rows.Find(this.grdContactInf.DataKeys[e.Item.ItemIndex]);
      drDelRow.Delete();
      this.ViewState["ds"] = ds;
    }
    绑定的时候要从: this.ViewState["ds"]中读取
    最后一块提交到数据库(Update)
      

  3.   


    TO :他山局士
    你说的我不怎么了解,我对存贮过程传递参数的概念不是很深,能不能给一个例子说明一下。我写的查询判断如下:
      strtem = TextBox1.Text
            If DropDownList1.SelectedItem.Text = "班级代码" And strtem <> "" Then
                strSql = "select * from dep where (orgeh= '" & strtem & "')"        ElseIf DropDownList1.SelectedItem.Text = "班级名称" And strtem <> "" Then
                strSql = "select * from dep where (orgtx='" & strtem & "')"
            ElseIf DropDownList1.SelectedItem.Text = "班主任" And strtem <> "" Then
                strSql = "select * from dep where (orgmst='" & strtem & "')"
            ElseIf strtem = "" Then
                strSql = "select * from dep"
            End If
    其中班级代码是数据表的主健,数据库表有三个字段:班级代码 班级名称 班主任
      

  4.   

    我的删除是这样取值的的:
     Private Sub serdata_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles serdata.ItemComman
        If e.CommandName = "btndelcn" ThenDim key As String = serdata.DataKeys(e.Item.ItemIndex).ToString()
     strSql = "DELETE from dep where orgeh='" + key + "'"         ExecSql(strSql)(调用过程执行)
      

  5.   

    用上面的方法出现了已下错误!
    异常详细信息: System.ArgumentOutOfRangeException: 索引超出范围。必须为非负值并小于集合大小。参数名: index源错误: 
    行 127:        If e.CommandName = "btndelcn" Then
    行 128:            '  DeleteRow(serdata.DataKeys(e.Item.ItemIndex).ToString())
    行 129:            Dim key As String = serdata.DataKeys(e.Item.ItemIndex).ToString()
    行 130:
    行 131:            '' orgeh = serdata.Items(0).Cells(0).Text.Trim()
     
    错在129行