[英]C# asp.net - Update specific row on SQL Server
我目前有一个带复选框列和按钮的asp.net gridview。 我正在尝试更新已选中复选框的数据库表。
我的SQL表具有以下字段
row_id(int)
MagazineCode(varchar)
尺寸(varchar)
过时的(int)
WEBFORM.aspx
<div id="effortGridHolder" style="width: 888px; height: 270px; overflow: auto;">
<asp:GridView ID="GridView1" runat="server" DataSourceID="SqlDataSource1"
AutoGenerateColumns="False" AlternatingRowStyle-CssClass="alt"
OnSelectedIndexChanged="GridView1_SelectedIndexChanged" CellPadding="4"
ForeColor="#333333" GridLines="None" Width="100%"
DataKeyNames="MagazineCode" >
<Columns>
<asp:BoundField DataField="MagazineCode"
HeaderText="MagazineCode" SortExpression="MagazineCode" />
<asp:BoundField DataField="Profile_ID"
HeaderText="Profile_ID" SortExpression="Profile_ID" />
<asp:BoundField DataField="Dimensions"
HeaderText="Dimensions" SortExpression="Dimensions" />
<asp:templatefield HeaderText="Obselete">
<itemtemplate>
<asp:checkbox ID="cbSelect" runat="server"></asp:checkbox>
</itemtemplate>
</asp:templatefield>
</Columns>
<asp:Button ID="obselete_btn" OnClick="obselete_submit" runat="server" Text="Update" />
C#代码
protected void obselete_submit(object sender, EventArgs e)
{
//GET CHECKED VALUES
foreach(GridViewRow row in GridView1.Rows)
{
if(row.RowType == DataControlRowType.DataRow)
{
CheckBox chkRow = (row.Cells[2].FindControl("cbSelect") as CheckBox);
if (chkRow.Checked)
{
//update
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ApplicationData"].ConnectionString);
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = "UPDATE table SET Obselete = '1' WHERE MagazineCode = '" + tbMagCode_GAD.Value + "'";
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
}
}
}
目前,我能够从复选框中获取检查值,并且当按下更新按钮时,它能够更新Obselete并将其设置为1。
当前的SQL查询是:
"UPDATE table SET Obselete = '1' WHERE MagazineCode = '" + tbMagCode_GAD.Value + "'";
但这并不好,因为数据库表可以具有相同的MagazineCode,并将更新所有表的Obselete字段。 我创建了一个名为row_id
的新字段,并希望更新table row_id = "gridview row clicked"
谢谢
尝试在网格中创建唯一的ID和ID,并使用该ID更新
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.