0

我是新手ASP.NETC#

我想根据在 GridView 中选择的行来更新我的数据库。

此 GridView 用于弹出窗口(另一个 ASPX 页面)。

我的弹出窗口背后的代码如下:

protected void gvDetails_RowDataBound(object sender, GridViewRowEventArgs e)
{
    string selectedID;
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        GridViewRow gvr = e.Row;
        selectedID = (gvDetails.DataKeys[e.Row.RowIndex].Value.ToString());
        Session["IDs"] = selectedID;
        conn.Open();
        System.Data.SqlClient.SqlCommand cmdUpdateSelectedRow = new System.Data.SqlClient.SqlCommand("Update myTable Set Selected = " + 1 +
                      " WHERE Id = " + Convert.ToInt32(Session["IDs"]) + "", conn);
        cmdUpdateSelectedRow.ExecuteNonQuery();
         conn.Close();
         gvr.Attributes.Add("OnClick", "javascript:window.close()");//i deleted the id= 
      }
 }

但是,我的数据库永远不会更新。

方法中的代码RowDataBound是在用户选择一行之前还是之后运行?

任何意见,将不胜感激。

4

1 回答 1

0

在 SelectedIndexChanged 事件中,获取当前选中的行:

GridViewRow row = gvDetails.SelectedRow;

然后,更新您的数据库

System.Data.SqlClient.SqlCommand cmdUpdateSelectedRow = new System.Data.SqlClient.SqlCommand("Update myTable Set Selected = " + row.Cells[0].Text +
" WHERE Id = " + Convert.ToInt32(Session["IDs"]) + "", conn);

从行的第一列获取数据的关键是:row.Cells[0].Text

于 2013-02-15T20:47:53.340 回答