C# 如何正确地向db显示和写入复选框列表?(理论/逻辑帮助)

C# 如何正确地向db显示和写入复选框列表?(理论/逻辑帮助),c#,asp.net,sql-server,database-design,checkboxlist,C#,Asp.net,Sql Server,Database Design,Checkboxlist,请注意,我现在的数据库设计完全处于沙箱模式。什么都没有定下来。所有内容(同样是在沙盒模式下)都在一个表中。另外,我现在正在寻找编码帮助。我正在寻找正确的理论/逻辑方法来解决这个难题,这样我就可以自己动手编写代码了。那样我学得更好。如果我需要编码帮助,我会回到这里寻求进一步帮助。 我正在为手动创建的表单提交创建第一个复选框列表。我一直在寻找多种方法,不仅可以创建上述复选框列表,还可以将其输入数据库。然而,我面临的挑战(主要是因为我以前没有遇到过这种情况,我想了解一下这一点)是,我不仅需要担心在数据

请注意,我现在的数据库设计完全处于沙箱模式。什么都没有定下来。所有内容(同样是在沙盒模式下)都在一个表中。另外,我现在正在寻找编码帮助。我正在寻找正确的理论/逻辑方法来解决这个难题,这样我就可以自己动手编写代码了。那样我学得更好。如果我需要编码帮助,我会回到这里寻求进一步帮助。

我正在为手动创建的表单提交创建第一个复选框列表。我一直在寻找多种方法,不仅可以创建上述复选框列表,还可以将其输入数据库。然而,我面临的挑战(主要是因为我以前没有遇到过这种情况,我想了解一下这一点)是,我不仅需要担心在数据库中正确输入项目,而且最终还需要根据这些项目生成报告或制作可打印表单

比如说,我有一份特定类型烤肉架的订单,我需要将此表单发送到全国各地的配送中心。如果表格上突出显示了烤肉,配送中心将需要拉动这些烤肉

以下是配送中心的复选框列表:

All Dallas Miami Los Angeles Seattle New York Chicago Phoenix Montreal 全部的 达拉斯 迈阿密 洛杉矶 西雅图 纽约 芝加哥 凤凰 蒙特利尔 如果检查了特定城市(或所有城市),则配送中心将拉动烧烤架进行装运

增加的部分是我想:

  • 能够从此数据库中创建一个网格视图,以便报告哪个配送中心获得了烧烤和烧烤的订单

  • 能够创建报告,以告知配送中心在给定的月份内发出了哪些烧烤订单(以及其他报告)

  • 这是我现在正在玩的东西。

    在我的aspx页面中,我有一个复选框列表,其中包含作为列表项输入的所有配送中心,以及一个“所有”(配送中心)选项

    我还在该表中创建了一个专用列,该列保存listitem中的所有信息,并为此表编程了一个sqldataconnection,以发挥为此目的利用数据库的可编程性


    在将选择写入数据库时,我最初为每个目的地城市创建了一列,包括“All”选项。我只是想把选择放在一个列中,但是根据我今天读到的关于数据库规范化的一些信息,前者似乎比后者更好。在这种情况下,尤其是当我需要考虑报告时,这种做法是否正确?我是否将复选框列表数据放在特定列的一个单元格中?我是否为每个配送中心创建seprate列?我在这里走对了吗?

    注意:这可能不是最好的方法,但我已经看到了它们的使用

    1) 有一列逗号分隔的字符串 如果选项在数据库中没有ID(有一个单独的引用表),这应该可以很好地工作

    • 您需要循环检查复选框列表,获取所选选项,并将它们与
      String.Join()连接起来
    • 您需要在从db接收字符串时拆分该字符串,并在结果数组中找到文本时使用它检查复选框
    • 问题:数据库中可能需要一个split函数,用于将逗号分隔的字符串转换为行。web/stackoverflow上没有拆分功能的实现
    2) 对于位置,您可以有一个单独的表,例如xxxxtable\u位置,其中引用了主表的FK。这将是一张多人桌

    ParentID,   Location
    1           Dallas
    2           Miami
    2           New York
    2           Chicago
    3           Miami
    

    根据要存储的城市数量,我使用了位运算符来存储少量数据。实际上,它会将其存储在表中,如下所示:

    CityID   Location
    2        Dallas
    4        Miami
    8        New York
    16       Chicago
    32       Montreal
    
    26 AND 8 = 8
    
    并继续在基地2的其他城市

    当用户为订单选择多个城市时,插入到城市数据库中的值为按位OR计算。因此,如果他们选择达拉斯、纽约和芝加哥,您将执行以下操作:

    2 OR 8 OR 16
    
    这等于26

    现在,可以对结果值使用位AND。因此,如果检查迈阿密,以下是评估:

    26 AND 4 = 0
    
    这表明迈阿密没有被选中。在求值中选择的任何值都将返回其ID,如下所示:

    CityID   Location
    2        Dallas
    4        Miami
    8        New York
    16       Chicago
    32       Montreal
    
    26 AND 8 = 8
    
    同样,我只将其用于小数据子集,并使数据存储尽可能紧凑。计算上,它可能比其他一些方法要贵一些,但我不是100%确定