网格视图:SQL 更新语句“其中行 ID = 当前编辑行号”,如何在更新语句中设置它
本文关键字:语句 更新 编辑 设置 ID SQL 视图 网格 其中行 | 更新日期: 2023-09-27 18:30:54
我有一个简单的网格视图和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.对于此代码:字符串 sqlQuery = "更新我的表集合 ID = '131' 其中 No = '1'";
- 我不想设置不固定,我想这样设置No=当前编辑行号,但我不知道我该怎么做,并且让它工作。
- 我知道如何获得当前的编辑(这么认为):网格视图行行= 网格视图1.行[e.行索引];
- 但是我不知道如何在更新语句中使用它
.对于上面的代码,如果我在浏览器中打开它,假设有 2 行( 1 和 2 ),我的代码说如果 No = 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.
}
}
您需要
在 gridView 设置中指定更新 ID。在这里我给你一个小演示
<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.
}
如果你想要其他任何东西,你可以在这里回复。