我认为打开一个新表格需要花费很多精力来完成这么简单的任务。当然,这取决于您的开发/设计风格,但我建议您在当前表格中添加一个新列,并在其中包含下拉列表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
表并直接在View
到DropdownID
的DropdownTexts
表中写入DropdownID
。
是否有任何特定的模式或它是随机的? – Neel 2014-10-01 08:59:38
写作中有什么难点......在(1,2)'或'IN(2,3)'中的哪个ID?只需为每个下拉菜单使用不同的数据源。如果它是LINQ:'.Where(x => new [] {1,2} .Contains(x.ID))'。是的,硬编码是最好的方法。如果下拉列表实际上表示不同类型的实体,则应通过创建具有有意义名称的其他表来重构数据模型。但是用这个匿名样本数据建议一些东西是不可能的。 – 2014-10-01 08:59:49
基本上需求已经发生了变化,当前页面上的每个文本框都会显示表格中的所有行。但是现在他们希望某些文本框包含特定的行。它可能会在某些时候改变显示的文字。 – user3437721 2014-10-01 09:03:37