4

我在 GridView 单元格中有一个复选框。我想在 CheckBox 更改时更新数据库,例如当我取消选中它时,表中的“状态”列更新为 false,反之亦然。

4

2 回答 2

7

你的问题很不完整。但我会试一试,也许它还是有帮助的。

假设您想在Checked状态更改后立即更新(用户单击CheckBox),您必须先进行设置AutoPostBack="true"

然后你可以处理CheckBox.CheckedChanged事件:

protected void Check_Clicked(Object sender, EventArgs e)
{
    // get the checkbox reference
    CheckBox chk = (CheckBox)sender;
    // get the GridViewRow reference
    GridViewRow row = (GridViewRow) chk.NamingContainer;
    // assuming the primary key value is stored in a hiddenfield with ID="HiddenID"
    HiddenField hiddenID = (HiddenField) row.FindControl("HiddenID");

    string sql = "UPDATE dbo.Table SET Status=@Status WHERE idColumn=@ID";
    using (var con = new SqlConnection(connectionString))
    using (var updateCommand = new SqlCommand(sql, con))
    {
        updateCommand.Parameters.AddWithValue("@ID", int.Parse(hiddenID.Value));
        // assuming the type of the column is bit(boolean)
        updateCommand.Parameters.AddWithValue("@Status", chk.Checked);
        con.Open();
        int updated = updateCommand.ExecuteNonQuery();
    }
}
于 2012-12-06T12:47:37.103 回答
1

网格源

<asp:TemplateField HeaderText="View">
<ItemTemplate>
<asp:CheckBox ID="chkview" runat="server" AutoPostBack="true" OnCheckedChanged="chkview_CheckedChanged" />
</ItemTemplate>
</asp:TemplateField>

C# 代码

protected void chkview_CheckedChanged(object sender, EventArgs e)
{
     // code here.
}
于 2012-12-06T12:53:21.290 回答