Как установить DropDownList выделенный элемент в разметке? - PullRequest
5 голосов
/ 17 февраля 2010

У меня есть DropDownList в столбце шаблона элемента управления GridView. GridView привязан к списку объектов. Каждый объект имеет свойство типа int, которое соответствует значению в одном из ListItems DropDownLists. Я мог бы установить выбранный элемент программно, добавив событие DataBind в выпадающий список, но мне интересно, есть ли способ установить выбранный элемент, используя блок кода в разметке aspx.

Ответы [ 3 ]

10 голосов
/ 17 февраля 2010

Будьте осторожны в этом дизайне. Таким образом, создание раскрывающихся списков сетки означает, что для каждого параметра в раскрывающемся списке вы будете повторять для каждой отдельной строки. Это может очень быстро добавить размер страницы, превышающий МБ, если у вас несколько строк или несколько раскрывающихся столбцов, что приведет к снижению производительности.

При этом вы можете сделать это в разметке, используя теги скриптов привязки контекста:

<asp:DropDown id="dropDown1" SelectedValue='<%# Eval("Key") %>' runat="server"/>

Теги привязки контекста также позволяют вызывать публичные / защищенные функции на странице / пользовательском элементе управления как:

<asp:DropDown id="dropDown1" SelectedValue='<%# myFunction((int) Eval("Key")) %>' runat="server"/>

public string myFunction(int key){
  return key.ToString();
}

В качестве альтернативы созданию одного и того же повторяющегося HTML для каждой строки, вы можете сделать эти автозаполнения раскрывающихся списков или создать скрытый раскрывающийся список, который отображает HTML только один раз, а затем использует JQuery или JavaScript для заполнения всех ваших раскрывающихся списков сетки на стороне клиента.

0 голосов
/ 17 февраля 2010

вы также можете использовать RowDataBound событие GridView или вы можете выбрать в разметке, как описано @ Brian

0 голосов
/ 17 февраля 2010

Вы можете установить его в разметке через:

<ItemTemplate>
<asp:DropDown .. SelectedValue='<%# Eval("Key") %>' />
</ItemTemplate>

Зависит от того, как вы его связываете, используете ли вы элемент управления источником данных? В любом случае, я заметил, что при таком подходе он может попытаться установить значение до того, как элементы будут связаны, и это может вызвать исключение. Не уверен, если бы это случилось однажды, подумал, что это может быть так, но я должен был рассмотреть это более подробно.

НТН.

...