【发布时间】:2014-12-07 19:06:14
【问题描述】:
我不确定我想要的是否可能,但到目前为止我没有运气......
我正在使用 Visual Studio、asp.net 和 SQL。 varchar(max) 类型的表中的字段...
我想要做的是将 CheckBoxList 的值保存到数据库中并检索它们以在 SQL 命令中比较它们以从数据库中的表中过滤一些值。
我举个例子就更容易理解了:
所以我在代码的 HTML 端有这些。
<asp:CheckBoxList ID="CheckBoxList1" runat="server" onselectedindexchanged="CheckBoxList1_SelectedIndexChanged">
<asp:ListItem Value="1">Sales</asp:ListItem>
<asp:ListItem Value="2">Administration</asp:ListItem>
<asp:ListItem Value="3">Help</asp:ListItem>
</asp:CheckBoxList>
这是保存数据的代码
protected void CheckBoxList1_SelectedIndexChanged(object sender, EventArgs e)
{
TextBox20.Text = "";
string s = null;
for (int i = 0; i < CheckBoxList1.Items.Count; i++)
{
if (CheckBoxList1.Items[i].Selected)
s += CheckBoxList1.Items[i].Value + ",";
TextBox20.Text = s;
}
}
现在,当有人选择两个选项时,例如 Sales 和 Administration,我希望将值 1,2 存储在数据库中的单个列中。
然后检索值,使用 SQL 显示在我想要的列中有销售或管理/销售和管理的行。
我不确定我是否以正确的方式进行此操作..但任何帮助将不胜感激....我读到创建一个包含我需要的所有值的表是正确的方式..但我不知道如何它有效..
【问题讨论】:
-
如果您发布代码、XML 或数据示例,请在文本编辑器中突出显示这些行并单击编辑器上的“代码示例”按钮 (
{ })工具栏以很好地格式化和语法突出显示它! -
这就是我所做的,不知道出了什么问题..事情太糟了...谢谢您纠正它..
-
提示:在单个列(“1,2”)中存储多个值通常是个坏主意。它使以后的查询变得非常复杂,例如查找所有工程师而非销售人员的管理员。使用单独的表格,例如
UserRoles,并将其与User数据连接是一种常见的方法。 -
对不起,我仍然没有得到最后的部分......我做了一个表,用户和兴趣表......用户表有 UID,兴趣表有 IID.. 意味着我需要加入表使用这 2 个 ID?然后当用户注册时,我怎么知道哪个用户有哪些兴趣?如果我制作了一个单独的表格,我不知道 1 个用户如何选择更多选项
-
查看SQLFiddle 以获取有关如何执行某些查询的示例。您将如何使用一列中的数字列表来处理它们?您会假设列中的数字已排序吗?为一个用户添加或删除一个角色怎么样?
标签: c# sql asp.net database checkboxlist