Esta pieza de códigoASP: DropDownList en ItemTemplate: ¿Por qué se permite el atributo SelectedValue?
<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>
produce este error:
The 'SelectedValue' property cannot be set declaratively.
Sin embargo, esto es una plantilla de edición legales y de uso general para GridViews enlace de datos. El atributo SelectedValue
ciertamente parece estar establecido declarativamente aquí.
<EditItemTemplate>
<asp:DropDownList runat="server"
ID="GenreDropDownList"
DataSourceID="GenreDataSource"
DataValueField="GenreId"
DataTextField="Name"
SelectedValue='<%# Bind("Genre.GenreId") %>'>
</asp:DropDownList>
</EditItemTemplate>
La pregunta es: ¿cuál es la diferencia entre los casos en que se le permite configurarlo de forma declarativa y aquellos en los que no está? El mensaje de error implica que nunca está permitido.
que responda a mi pregunta, si no fuera por la segunda parte de mi pregunta. Claramente, en ciertos casos, se le permite establecer declarativamente SelectedValue, como lo ilustré. Intento entender la diferencia entre los casos en los que está permitido y no. – recursive
Porque en la plantilla gridview aún no ha establecido un valor usando el método bind. El enlace realmente ocurre en tiempo de ejecución. Es como decir "En tiempo de ejecución, cuando enlace datos, seleccione un valor basado en este campo" – Gautam