2012-09-27 38 views
0

我們的項目用戶很多下拉列表控件。我的問題是我們應該在他們的數據庫中存儲什麼,訂單號或文本本身。DropDownList數字或文本?

例如:

<option value="1">This is the first option</option> 
<option value="2">This is the second option</option> 

轉換的 「1」 和 「2」 至SMALLINT 1,2到數據庫。 - 或 -

<option value="This is the first option">This is the first option</option> 
<option value="This is the second option">This is the second option</option> 

在字段中使用varchar數據類型。

訂單號適合統計,但文本是動態修改的,例如在1和2之間插入另一個選項,不必擔心訂單。此外,如果它嵌入在GridView中,我們可以簡單地拖動文本,而不是在GridView中放置DropDownList控件以查看文本。

回答

1

如果你不想從數據庫表中加載下拉列表,那麼這就是我要做的。使用下拉列表中的整數值。然後,你要做的就是在數據庫中創建模擬這些值的表格,因爲這樣可以讓你在表格上構建外鍵,並執行報告,以及統計數據(如你所談論的) 。

最後,您可能希望創建與值匹配的Enum,因爲這會使他們更容易在程序內部使用。例如:

public enum MyLookupTable 
{ 
    Value1 = 1, 
    Value2 = 2, 
    etc... 
} 

現在,我剛纔描述的是不必保持下拉菜單,因爲你只需要從數據庫加載它們,這樣你們可以發現,here的一個很好的例子只有一步。

+0

我認爲這是一種很好的方法,而且我之前也這樣做過。不好的一面是我們已經爲每個(不同的)下拉列表創建了表格和枚舉。此外,我不會再做關鍵的自動增量。因爲如果我們想插入一個選項,它會一直走到最後,我會這樣做,10:第一個選項,20:第二個選項。然後我可以在它們之間插入9。 – etlds

+1

@DeshengLi:你爲什麼需要插入一個? –

+0

更改始終存在,但更改下拉選項並不常見。 @麥克風 – etlds

0

使用某種標識符。絕對是一個號碼,但不只是訂單號碼。如你所說,你可能會在未來添加其他選項,或者你可能想要重新排列現有值。

0

如果只有兩個選項,我會在數據庫中創建一個IsFirst布爾列,並從選定內容中保留。對於第二個選項是錯誤的第一個選項爲真

0

我建議你創建一個包含訂單號和文本的表格,訂單號碼作爲「自動增量」的主鍵。

例如,如果您在另一個表中需要「這是第一個選項」,請使用第一個tabel的主鍵作爲第二個表中的「外鍵」。這樣,您可以更改文本值而無需更改任何其他表格。