当我们在ASP.NET下拉列表中有datatext字段时,datavaluefield的原因是什么?
当我们可以执行ddl.text时,ddl.selectedvalue和ddl.selecteditem.text的原因是什么?
答案 0 :(得分:1)
他们不同样的事情。工具(VS)可能会因为其默认行为而使您认为。显示text
,value
是值。在一天结束时,这意味着:
控制
<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>
选择的相同想法取决于您所追求的内容(值与文本)。
如果您为value
和text
使用了相同的数据,那么是的,您可以使用其中任何一种。
<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所说,它们并不相同,如果您愿意,可以用来保存不同的值。