[英]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.