SelectedValue
trả về cùng giá trị như SelectedItem.Value
.
SelectedItem.Value
và SelectedItem.Text
có thể có giá trị khác nhau và hiệu suất không phải là yếu tố ở đây, chỉ ý nghĩa của các thuộc tính này quan trọng.
<asp:DropDownList runat="server" ID="ddlUserTypes">
<asp:ListItem Text="Admins" Value="1" Selected="true" />
<asp:ListItem Text="Users" Value="2"/>
</asp:DropDownList>
Ở đây, ddlUserTypes.SelectedItem.Value == ddlUserTypes.SelectedValue
và cả hai sẽ trả về giá trị "1".
ddlUserTypes.SelectedItem.Text
sẽ trở về "Quản trị viên", mà là khác nhau từ ddlUserTypes.SelectedValue
chỉnh sửa
dưới mui xe, SelectedValue trông như thế này
public virtual string SelectedValue
{
get
{
int selectedIndex = this.SelectedIndex;
if (selectedIndex >= 0)
{
return this.Items[selectedIndex].Value;
}
return string.Empty;
}
}
và SelectedItem trông như thế này:
public virtual ListItem SelectedItem
{
get
{
int selectedIndex = this.SelectedIndex;
if (selectedIndex >= 0)
{
return this.Items[selectedIndex];
}
return null;
}
}
Một khác biệt lớn giữa hai thuộc tính này là SelectedValue
cũng có setter cũng vậy, vì SelectedItem
thì không. Số getter của SelectedValue
nhanh hơn khi viết mã và vấn đề về hiệu suất thực thi không có lý do thực sự nào để được thảo luận. Một lợi thế lớn của SelectedValue là khi sử dụng các biểu thức Binding.
chỉnh sửa dữ liệu ràng buộc kịch bản (bạn không thể sử dụng SelectedItem.Value)
<asp:Repeater runat="server">
<ItemTemplate>
<asp:DropDownList ID="ddlCategories" runat="server"
SelectedValue='<%# Eval("CategoryId")'>
</asp:DropDownList>
</ItemTemplate>
</asp:Repeater>
Nguồn
2012-03-05 09:25:27
Cảm ơn bạn đã chỉ cho tôi .. Tôi đã nhập nhầm .Text .. thực sự .Value đang được sử dụng ở khắp mọi nơi. Vì vậy, việc thực hiện bên trong của cả hai thuộc tính (SelectedItem.Value & SelectedValue) là như nhau? Cú pháp SelectedItem (hai dấu chấm) có phức tạp hơn so với SelectValue một-hop-away không? –
Cảm ơn bạn Adrian. Bạn có thể chi tiết về lợi thế biểu thức Binding không? Sẽ rất có nghĩa vụ! –
@vulcanraven, chào mừng, tôi đã cập nhật câu trả lời bằng ví dụ về dữ liệu –