0

私は と が初めて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、ユーザーが行を選択する前または後に実行されていますか?

アドバイスをいただければ幸いです。

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 に答える