0

データテーブルからグリッドビューにデータをバインドするための単純なグリッドビューと sqldatasource があります。

  • // 「列」は列、型: int、1 ずつインクリメント、主キー

// ID は単なる列型 int です。行更新イベントのコードは次のとおりです。

 string con = "conn string";

            string sqlQuery = "Update TableName set Column = @Column WHERE RowID = '1' (//here I need to get the current editing row number)";
            using (SqlConnection dataConnection = new SqlConnection(con))
            {
                using (SqlCommand dataCommand = new SqlCommand(sqlQuery, dataConnection))
                {
                    int vas = 121;
                    dataCommand.Parameters.AddWithValue("Column", vas);
                    dataConnection.Open();
                    dataCommand.ExecuteNonQuery();
                    dataConnection.Close();

                }

            }

ここに私の質問があります:

1.このコードの場合: string sqlQuery = "UPDATE mytable SET ID = '131' WHERE No = '1' ";

  • No fixed を設定したくありません。このように No=CurrentEditingRowNumber を設定したいのですが、どうすればそれを実行して機能させることができるのかわかりません。
  • 現在の編集を取得する方法を知っています(そう思います):GridViewRow row = GridView1.Rows[e.RowIndex];
  • しかし、更新ステートメントでそれを使用する方法がわかりません

2.上記のコードをブラウザで開いた場合、2 行 ( 1 と 2 ) があり、コードで No = 1 の場合に更新するように指示されているとします。

最初の行に [更新] を押しても何も起こりませんが、2 行目から [更新] を押すと、コードはコード化されたとおりに最初の行で実行されます。どうすれば修正できますか?

ありがとう

4

2 に答える 2

1

CommandArgument を使用し、Gridview onrowcommand イベントでその値を取得します。

<asp:LinkButton ID="btnUpdate" runat="server" CommandArgument='<%#Eval("RowID")%>' CommandName="btnUpdate" Text="Update">

  protected void GridView_RowCommand(Object sender, GridViewCommandEventArgs e)
  {
    if(e.CommandName=="btnUpdate")
    {
      int index = Convert.ToInt32(e.CommandArgument);
      string sqlQuery = "Update TableName set Column = @Column WHERE RowID = index;
      //now bind your gridview here using index id.
    }
  }
于 2012-04-13T07:24:36.917 に答える
0

更新 ID を gridview 設定に指定する必要があります。ここで小さなデモを行います

<asp:ImageButton ID="imgBtnEdit" runat="server" CommandArgument="<%# ((GridViewRow) Container).RowIndex %>" ToolTip="Edit Record" ImageUrl="~/images/edit.gif" OnClick="imgEdit_OnClick" />

操作を実行するOnclickイベント

 protected void imgEdit_OnClick(object sender, ImageClickEventArgs e)
    {
        ImageButton im1 = (ImageButton)sender;
        GridViewRow grv1 = (GridViewRow)im1.Parent.Parent;
        string id = grv1.Cells[0].Text.ToString();
        // pass this Id value into your query string for update operation. better way you follow three-tier architecture.
    }

他に何かあれば、ここで返信できます。

于 2012-04-13T07:28:06.417 に答える