Questo pezzo di codiceASP: DropDownList in ItemTemplate: Perché l'attributo SelectedValue è consentito?
<asp:DropDownList runat="server" ID="testdropdown" SelectedValue="2">
<asp:ListItem Text="1" Value="1"></asp:ListItem>
<asp:ListItem Text="2" Value="2"></asp:ListItem>
<asp:ListItem Text="3" Value="3"></asp:ListItem>
</asp:DropDownList>
cede questo errore:
The 'SelectedValue' property cannot be set declaratively.
Eppure, questo è un modello di modifica legale e comunemente usato per GridView databound. L'attributo SelectedValue
sembra essere impostato in modo dichiarativo qui.
<EditItemTemplate>
<asp:DropDownList runat="server"
ID="GenreDropDownList"
DataSourceID="GenreDataSource"
DataValueField="GenreId"
DataTextField="Name"
SelectedValue='<%# Bind("Genre.GenreId") %>'>
</asp:DropDownList>
</EditItemTemplate>
La domanda è: qual è la differenza tra i casi in cui si è permesso di impostare in modo dichiarativo e quelli in cui non si è? Il messaggio di errore implica che non è mai consentito.
Che avrebbe risposto alla mia domanda, se non fosse stato per la seconda parte della mia domanda. Chiaramente, in alcuni casi, è consentito impostare in modo selettivo SelectedValue, come illustrato. Sto cercando di capire la differenza tra i casi in cui sei autorizzato e non. – recursive
Perché nel modello gridview non si è ancora impostato un valore utilizzando il metodo bind. Il binding avviene in realtà a runtime. È come dire "In fase di runtime, quando collego i dati ad esso, selezionare un valore basato su questo campo" – Gautam