2014-10-01 64 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