Этот фрагмент кодаASP: DropDownList в ItemTemplate: Почему атрибут 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>
дает эту ошибку:
The 'SelectedValue' property cannot be set declaratively.
Тем не менее, это является законным и часто используемый шаблон для редактирования с привязкой к данным GridViews. Атрибут SelectedValue
, безусловно, представляется декларативно установленным здесь.
<EditItemTemplate>
<asp:DropDownList runat="server"
ID="GenreDropDownList"
DataSourceID="GenreDataSource"
DataValueField="GenreId"
DataTextField="Name"
SelectedValue='<%# Bind("Genre.GenreId") %>'>
</asp:DropDownList>
</EditItemTemplate>
Вопрос: в чем разница между случаями, когда вам разрешено декларировать декларативно, и те, в которых вы не являетесь? Сообщение об ошибке означает, что это никогда не разрешено.
Что бы ответить на мой вопрос, если бы это было не для второй части моего вопроса. Очевидно, что в некоторых случаях вам разрешено декларативно устанавливать SelectedValue, как я иллюстрировал. Я пытаюсь понять разницу между случаями, когда вам разрешено, а не. – recursive
Поскольку в шаблоне gridview вы фактически не установили значение, используя метод bind. Связывание фактически происходит во время выполнения. Это как сказать: «Во время выполнения, когда я привязываю данные к нему, выберите значение на основе этого поля» – Gautam