繁体   English   中英

C#asp.net-更新SQL Server上的特定行

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM