DropDownList号码还是文字?

时间:2012-09-27 19:46:33

标签: c# asp.net .net

我们的项目使用了很多下拉列表控件。我的问题是我们应该在数据库中存储什么,订单号或文本本身。

例如:

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

将“1”和“2”转换为smallint 1,2到数据库。 --OR -

<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数据类型。

订单号适用于统计信息,但Text是动态的修改,例如在1和2之间插入另一个选项,而不必担心订单。此外,如果它嵌入在GridView中,我们可以简单地拉取文本而不是在GridView中放置DropDownList控件以查看文本。

4 个答案:

答案 0 :(得分:1)

如果您不想从数据库表中加载下拉列表,那么这就是我要做的。使用下拉列表中的整数值。那么你想要做的是在数据库中创建模仿这些值的表,因为这将使你能够在表上构建外键并执行有意义的报告以及统计(如你所谈到的)

最后,您可能希望创建与值匹配的Enum,因为这样可以更轻松地在程序内部使用它们。例如:

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

现在,我刚刚描述的只是迈出了一步,因为你只需要从数据库中加载它们,你可以找到一个很好的例子here

答案 1 :(得分:0)

使用某种识别器。绝对是一个数字,但不仅仅是订单号。如您所说,您可能会在将来添加其他选项,或者您可能希望重新排列现有值。

答案 2 :(得分:0)

如果只有两个选项,我会在数据库中创建一个IsFirst布尔列,并从所选内容中保留。对于第一个

,第二个选项为True

答案 3 :(得分:0)

我建议你创建一个包含订单号和文本的表,订单号作为“自动增量”的主键。

例如,如果您在另一个表中需要“这是第一个选项”,请使用第一个表格的主键作为第二个表中的“外键”。这样,您只需更改文本值,而无需更改任何其他表。