当我关闭在ASP.NET中使用GridView的弹出窗口时,更新我的数据库

Update my database when I close a popup window that uses a GridView in ASP.NET

本文关键字:窗口 数据库 我的 更新 GridView ASP NET      更新时间:2023-09-26

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

如有任何建议,我们将不胜感激。

在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);

从行的第一列获取数据的关键是:行。单元格[0]。文本