Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 关闭ASP.NET中使用GridView的弹出窗口时更新数据库_C#_Javascript_Asp.net_Gridview - Fatal编程技术网

C# 关闭ASP.NET中使用GridView的弹出窗口时更新数据库

C# 关闭ASP.NET中使用GridView的弹出窗口时更新数据库,c#,javascript,asp.net,gridview,C#,Javascript,Asp.net,Gridview,我是ASP.NET和C的新手 我想根据在GridView中选择的行更新数据库 此GridView用于弹出窗口(另一个ASPX页面) 我的弹出窗口背后的代码如下: protected void gvDetails_RowDataBound(object sender, GridViewRowEventArgs e) { string selectedID; if (e.Row.RowType == DataControlRowType.DataRow) {

我是
ASP.NET
C
的新手

我想根据在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
方法中的代码是在用户选择行之前还是之后运行的


任何建议都将不胜感激。

在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

您犯了很大的错误,在选择行时触发的事件是
gvDetails\u SelectedIndexChanged
是,但我想获取第一列的值,如何使用SelectedIndexChanged实现这一点?