在SQL Server中将复选框的值存储为0或1

时间:2012-07-28 20:16:28

标签: c# asp.net sql-server c#-4.0

我有四个这样的复选框,

<asp:CheckBoxList ID="CheckBoxList1" runat="server" 
                onselectedindexchanged="CheckBoxList1_SelectedIndexChanged" Width="190px">
                <asp:ListItem>Programming Contests</asp:ListItem>
                <asp:ListItem>Seminars/Workshops</asp:ListItem>
                <asp:ListItem>Social Gatherings</asp:ListItem>
                <asp:ListItem>Tech Support</asp:ListItem>
</asp:CheckBoxList>

我想将这些复选框的值存储为表中的0或1。此外,可能存在用户选择多个复选框的情况,如何处理该情况?我在数据库中使用了'bit'数据类型。但我遇到的困惑是如何将这些复选框的存储为数据库中的0或1?

3 个答案:

答案 0 :(得分:0)

这真的很简单。您需要做的就是为数据库中的每个选项创建一个位字段。我没有看到任何其他逻辑方式。

从复选框返回的true或false值在C#中称为bools。 Bool存储在数据库中,位为true,为1,false为0。

修改

如果您打算扩展选项,我会建议以下内容。您可以创建一个包含所有选项的表,并为它们设置代码。然后创建一个链接表,其中包含他们想要的人和选项。如果用户选择多个选项,它们将被多次放入表中(每个选项一次)。

答案 1 :(得分:0)

你可以试试这个:表“checkboxlist”,带有字段Id,Description来保存复选框列表项。然后让你的表与用户选择的项目:表“Checkboxanswers”,其中“checkboxitemId”字段是“checkboxlist”的id字段的外键,然后添加另一个位字段以指示它是否被选中

答案 2 :(得分:0)

protected void CheckBoxList1_SelectedIndexChanged(object sender, EventArgs e)
{
  List<int> checkList = new List<int>();
  foreach (ListItem item in CheckBoxList1.Items)
  {
     if (item.Selected)
     {
        checkList.Add(1);
     }
     else
     {
        checkList.Add(0);
     }

     //Now you can use this list to pass it to Sql
  }
}