gpt4 book ai didi

c# - 从数据库中保存/检索/比较 CheckboxList 值

转载 作者:搜寻专家 更新时间:2023-10-30 19:50:54 48 4
gpt4 key购买 nike

我不确定我想要的是否可行,但到目前为止我还没有运气......

我正在使用 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;
}
}

现在,当有人选择两个选项时,例如 SalesAdministration,我希望将值 1,2 存储在数据库中的单个列中。

然后检索值,使用 SQL 显示在我想要的列中有销售或管理/销售和管理的行。

我不确定我是否以正确的方式处理这个问题。但是任何帮助将不胜感激......我读到创建一个包含我需要的所有值的表是他们正确的方式......但我不知道如何它有效..

最佳答案

首先,我建议使用 StringBuilder 类在循环内进行字符串连接,因为它效率更高 -

For routines that perform extensive string manipulation (such as apps that modify a string numerous times in a loop), modifying a string repeatedly can exact a significant performance penalty. The alternative is to use StringBuilder, which is a mutable string class.

MSDN StringBuilder Class Documentation

我同意 HABO 的上述评论,将逗号分隔值存储在单个列中几乎总是一个坏主意。您可能应该创建一个名为 User 的类。为用户类提供“名称”和“角色”等属性。

关于这个数据的数据库结构,我再次同意HABO,推荐两张表。用户和用户角色。在用户表中,您将存储 Id、用户名、年龄等数据。然后您可以在 UserRoles 表中存储 UserId(用户表中的 ID),这样可以为用户分配多个角色。

如果您需要更多详细信息,请随时询问,我会尝试提供示例架构等。

关于c# - 从数据库中保存/检索/比较 CheckboxList 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27346639/

48 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com