asp.net - net - ASP: DropDownList en ItemTemplate: ¿Por qué se permite el atributo SelectedValue?
asp net gridview itemtemplate dropdownlist selectedvalue (2)
Significa que no puede establecerlo a través del diseñador.
La forma correcta es:
<asp:DropDownList runat="server" ID="testdropdown">
<asp:ListItem Text="1" Value="1"></asp:ListItem>
<asp:ListItem Text="2" Value="2" Selected></asp:ListItem>
<asp:ListItem Text="3" Value="3"></asp:ListItem>
</asp:DropDownList>
El motivo por el que funciona el método dependiente es porque el valor no se selecciona en modo de diseño sino en tiempo de ejecución después de que el control está vinculado a una fuente de datos
El método DropDownList.SelectedValue está destinado a aplicarse en tiempo de ejecución, por lo tanto, el error acerca de no poder establecerlo ''decorativamente''
Esta pieza de código
<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:
La propiedad ''SelectedValue'' no se puede establecer de forma declarativa.
Sin embargo, esta es una plantilla de edición legal y de uso común para GridViews de datos. El atributo SelectedValue
ciertamente parece ser declarativamente establecido 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 los que se te permite establecerlo de forma declarativa y aquellos en los que no? El mensaje de error implica que nunca está permitido.
en el marcado use SelectedValue = ''<% # "32"%> sintaxis. (tenga en cuenta el siguiente ejemplo):
<asp:DropDownList ID="ddlField" SelectedValue=''<%# "32" %>''
runat="server" DataTextField="Name" DataValueField="ID" >
</asp:DropDownList>
o en el código subyacente justo después de DataBinding. (ejemplo):
ddlField.DataSource = Fields.SelectAll();
ddlField.DataBind();
ddlField.SelectedValue = "32";