Использование DropDownList в EditTemplates GridView - PullRequest
1 голос
/ 08 марта 2010

Я работаю над GridView в Asp.Net. Когда изначально страница загружается, мой вид сетки выглядит так: альтернативный текст http://www.freeimagehosting.net/uploads/e45e5b66d4.jpg

Когда пользователь нажимает, чтобы отредактировать строку, я использую шаблоны редактирования, чтобы отобразить «Домен» в DropDownList. Но проблема в том, что когда DropDownlist получает нагрузку с данными, он теряет текущее значение «Домена».
т.е. Если я хочу редактировать 4-ую строку, ее домен, который в настоящее время установлен на 'Компьютеры' , изменяется на 'MBA' , который, конечно, является первым элементом Возврат к источнику данных. альтернативный текст http://www.freeimagehosting.net/uploads/7d3f6ba9a5.jpg


Я хочу отобразить текущее значение («компьютеры») как выбранное значение в DropDownList. Но я не могу получить значение Domain, которое редактируется.

Ответы [ 3 ]

2 голосов
/ 08 марта 2010

для разрешения исключения используйте AppendDataBoundItems = "true".

<asp:DropDownList ID="ddlCategory" runat="server" SelectedValue='<%# Eval("Domain") %>' 
        DataSourceID="datasource"
            DataTextField="text" DataValueField="value" AppendDataBoundItems="true">
            <asp:ListItem Text="Select..." Value=""></asp:ListItem>
        </asp:DropDownList>
2 голосов
/ 08 марта 2010

Вы можете привязать свойство SelectedValue раскрывающегося списка следующим образом:

SelectedValue='<%# Eval("Domain") %>'

Однако, если вы свяжете несуществующее значение, будет сгенерировано исключение. Поэтому вам может потребоваться обработать код в зависимости от вашего сценария.

РЕДАКТИРОВАТЬ: если значение не существует, неудачное оставшееся решение будет нажать на RowDataBound вида сетки и получить ссылку на раскрывающийся список, и выполните:

MyBoundObject obj = (MyBoundObject)e.Row.DataItem;
DropDownList ddl = (DropDownList)e.Row.Cells[<index>].FindControl("ddl1");
ListItem item = ddl.Items.FindByValue(obj.Domain);
if (item != null) item.Selected = true;

Здесь, только если элемент списка существует, он выбирается. Если это не выбирает элемент, попробуйте ddl.SelectedValue = item.Value.

НТН.

0 голосов
/ 08 марта 2010

Это может помочь вам:

Прослушайте событие RowEditing, получите Dropdownlist определенной строки с помощью метода .FindControl () и выполните явный .DataBind () для DDL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...