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实现这一点?