SelectedValue
10, SelectedItem.Value
ile aynı değeri döndürür.
SelectedItem.Value
ve SelectedItem.Text
farklı değerlere sahip olabilir ve performans burada bir faktör değildir, yalnızca bu özelliklerin anlamları önemlidir.
<asp:DropDownList runat="server" ID="ddlUserTypes">
<asp:ListItem Text="Admins" Value="1" Selected="true" />
<asp:ListItem Text="Users" Value="2"/>
</asp:DropDownList>
İşte
, ddlUserTypes.SelectedItem.Value == ddlUserTypes.SelectedValue
ve her iki değeri "1" döndürecektir.Kaputun altındaki ddlUserTypes.SelectedValue
düzenlemek
farklıdır
ddlUserTypes.SelectedItem.Text
"Yöneticiler" döneceğini, SelectedValue bu
public virtual string SelectedValue
{
get
{
int selectedIndex = this.SelectedIndex;
if (selectedIndex >= 0)
{
return this.Items[selectedIndex].Value;
}
return string.Empty;
}
}
benziyor ve SelectedItem şuna benzer:
public virtual ListItem SelectedItem
{
get
{
int selectedIndex = this.SelectedIndex;
if (selectedIndex >= 0)
{
return this.Items[selectedIndex];
}
return null;
}
}
bu iki özellik arasındaki
Bir önemli fark SelectedItem
değil çünkü SelectedValue
, aynı zamanda bir ayarlayıcı olmasıdır. Kod yazmadan ve yürütme performansının sorunu tartışılacak için gerçek bir neden olduğunda alıcı SelectedValue
arasında hızlıdır. Ayrıca, Bağlama ifadeleri kullanıldığında SelectedValue'nin büyük bir avantajıdır.
düzenlemek (eğer SelectedItem.Value kullanamazsınız) senaryo bağlayıcı veri
<asp:Repeater runat="server">
<ItemTemplate>
<asp:DropDownList ID="ddlCategories" runat="server"
SelectedValue='<%# Eval("CategoryId")'>
</asp:DropDownList>
</ItemTemplate>
</asp:Repeater>
Teşekkür koymak .. aslında .Value her yerde kullanılıyor. Yani, her iki özelliğin iç uygulaması (SelectedItem.Value & SelectedValue) aynı mıdır? SelectedItem (iki nokta) sözdizimi, tek-hop-away SelectedValue ile karşılaştırıldığında daha karmaşık değil mi? –
Teşekkür ederim Adrian. Binding ifadeleri avantajı hakkında ayrıntılı bilgi verir misiniz? Çok mecbur olurdu! –
@vulcanraven, hoş geldiniz, cevabı güncellenmiş bir örnekle güncelledim –