当我们在ASP.NET下拉列表中有datatext字段时,datavaluefield的原因是什么?

时间:2014-07-17 13:09:43

标签: asp.net drop-down-menu

  1. 当我们在ASP.NET下拉列表中有datatext字段时,datavaluefield的原因是什么?

  2. 当我们可以执行ddl.text时,ddl.selectedvalue和ddl.selecteditem.text的原因是什么?

2 个答案:

答案 0 :(得分:1)

他们同样的事情。工具(VS)可能会因为其默认行为而使您认为。显示textvalue是值。在一天结束时,这意味着:

控制

<asp:DropDownList ID="DropDownList1" runat="server">
   <asp:ListItem Value="datavaluefield1">datatext 1</asp:ListItem>
   <asp:ListItem Value="datavaluefield2">datatext 2</asp:ListItem>
   <asp:ListItem Value="datavaluefield3">datatext 3</asp:ListItem>
</asp:DropDownList>

呈现HTML:

<select name="DropDownList1" id="DropDownList1">
   <option value="datavaluefield1">datatext 1</option> 
   <option value="datavaluefield2">datatext 2</option>
   <option value="datavaluefield3">datatext 3</option>
</select>

选择的相同想法取决于您所追求的内容(值与文本)。

如果您为valuetext使用了相同的数据,那么是的,您可以使用其中任何一种。

<asp:DropDownList ID="DropDownList1" runat="server">
    <asp:ListItem Value="foo">foo</asp:ListItem>

呈现:

<select name="DropDownList1" id="DropDownList1">
   <option value="foo">foo</option> 

此外,在ASP.Net之外,让我们说你需要POST到其他资源,它将是value发送的。

//input_name_key=input_name_selected_value
DropDownList1=the_selected_value

所以在上面的例子中,如果您选择了第3项:

DropDownList1=datavaluefield3 //not "datatext 3"

答案 1 :(得分:1)

扩展EdSF对差异的解释,并给出一个真实世界的例子,假设你有一个STATES的数据库表:

STATE_ID    STATE_NAME
----------------------
1           Michigan
2           Colorado
3           Florida

使用这种数据,您可以使用DataValueField来保存STATE_ID和DataTextField来保存STATE_NAME。然后,状态的名称将显示为可供选择的文本,ID将是与幕后名称相关联的值。

<asp:DropDownList ID="DropDownList1" runat="server"
    DataValueField="STATE_ID"
    DataTextField="STATE_NAME">
</asp:DropDownList>

假设您正在将地址存储在另一个表中,并且该表包含STATES表的外键。将状态的ID传递给存储过程要比对状态名称执行另一个子查询要简单得多(这个名称可能随时更新,因此不会像您曾经知道的那样存在)。

int stateID = int.Parse(DropDownList1.SelectedValue);

正如EdSF所说,它们并不相同,如果您愿意,可以用来保存不同的值。