2014-10-01 62 views
2

我必须限制ASP.NET中某些下拉框的内容。限制ASP.net下拉

页面上有6个下拉列表,下拉列表项从数据库中填充。

在数据库中,下拉表是这样的:

ID Text 
1  This is some text 
2  Some more text 
3  Even more text 
4  This is just silly now 

因此,对于网页上的每个文本框 - 我想只显示某些数据库表行。

例如,对于dropdownbox1我可能希望显示表ID 1和2 对于dropdownbox2我可能希望显示表ID 2和3
对于dropdownbox3我可能只想显示行4.

因此,如果不在LINQ中对其进行硬编码,我会更好地为每个下拉框创建另一个表,以及我想要显示哪些ID? 我不知道什么是最好的方法?

+1

是否有任何特定的模式或它是随机的? – Neel 2014-10-01 08:59:38

+1

写作中有什么难点......在(1,2)'或'IN(2,3)'中的哪个ID?只需为每个下拉菜单使用不同的数据源。如果它是LINQ:'.Where(x => new [] {1,2} .Contains(x.ID))'。是的,硬编码是最好的方法。如果下拉列表实际上表示不同类型的实体,则应通过创建具有有意义名称的其他表来重构数据模型。但是用这个匿名样本数据建议一些东西是不可能的。 – 2014-10-01 08:59:49

+0

基本上需求已经发生了变化,当前页面上的每个文本框都会显示表格中的所有行。但是现在他们希望某些文本框包含特定的行。它可能会在某些时候改变显示的文字。 – user3437721 2014-10-01 09:03:37

回答

1

我认为打开一个新表格需要花费很多精力来完成这么简单的任务。当然,这取决于您的开发/设计风格,但我建议您在当前表格中添加一个新列,并在其中包含下拉列表ID。

解决方案1:

ID Text      Dropdowns 
1  This is some text   -DD1-DD2- 
2  Some more text    -DD2-DD3- 
3  Even more text    -DD3- 
4  This is just silly now  -DD4- 

您可以在代码中的微小变化填充下拉菜单。我使用分隔符的原因是为了处理DD1成功的文字DD10

您将不得不使用-DropdownID-(或选择使用相同格式的任何分隔符)进行字符串包含搜索。编辑该列中的值,假设-是分隔符:

  • 分配-在数据库端和列列将举行-如果他们是空的默认值。
  • 添加新的下拉ID,首先查找包含您的ID的ID,然后将DropdownID-连接到列值。
  • 删除下拉ID,只需用空字符串替换DropdownID-即可:""
  • 如前所述,使用-DropdownID-进行搜索。

如果每个实体只能一次显示在一个下拉列表中,您只需将下拉列表的名称写入新列,然后查找平等而不是包含。

解决方案2:

我看到你想过每个下拉列表中打开新的数据库表。这是一个非常糟糕的做法。你可以建立类似:

 -- Texts--      -- Dropdowns --   -- DropdownTexts -- 
ID Text      ID  ViewID >..< ID  TextID  DropdownID 
1  This is some text   1  DD1    1  1   1 
2  Some more text    2  DD2    2  1   3 
3  Even more text    3  DD3    3  2   3 
4  This is just silly now        4  4   1 

我打开表Dropdowns的情况下,你需要用实现数据库方面的帮助,您可以添加更多的列到Dropdowns,使其更配置。如果不这样做,则忽略Dropdowns表并直接在ViewDropdownIDDropdownTexts表中写入DropdownID

+0

这看起来很聪明 - 假设.Contains工作正常,你已经占了。我会尝试一下,但这可能是一个很好的中间解决方案,而不是硬编码或创建一个新表格。 – user3437721 2014-10-01 09:31:40

+0

请参阅我的编辑。我不知道如何进一步挖掘,真的:) – 2014-10-01 10:45:01