0

我有一个简单的 gridview 和 sqldatasource 来将数据从数据表绑定到 gridview。

  • // “Column”是一列,类型:int,递增一,主键

// 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 则更新。

如果按更新到第一行没有任何反应,但是如果我从第二行按更新,则代码将在第一行执行,因为它是编码的..我该如何解决这个问题?

谢谢

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

您需要在 gridview 设置中指定更新 ID。这里我给你一个小demo

<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 回答