Я пытаюсь получить GridView ASP.NET 3.5, чтобы отображать выбранное значение как строку при отображении, и показать DropDownList, чтобы я мог выбрать значение из заданного список вариантов при редактировании. Кажется, достаточно просто?Редактирование строки Gridview - динамическое связывание с DropDownList
Мой GridView выглядит следующим образом (упрощенно):
<asp:GridView ID="grvSecondaryLocations" runat="server"
DataKeyNames="ID" OnInit="grvSecondaryLocations_Init"
OnRowCommand="grvSecondaryLocations_RowCommand"
OnRowCancelingEdit="grvSecondaryLocations_RowCancelingEdit"
OnRowDeleting="grvSecondaryLocations_RowDeleting"
OnRowEditing="grvSecondaryLocations_RowEditing"
OnRowUpdating="grvSecondaryLocations_RowUpdating" >
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:Label ID="lblPbxTypeCaption" runat="server"
Text='<%# Eval("PBXTypeCaptionValue") %>' />
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList ID="ddlPBXTypeNS" runat="server"
Width="200px"
DataTextField="CaptionValue"
DataValueField="OID" />
</EditItemTemplate>
</asp:TemplateField>
</asp:GridView>
Сетка получает отображается OK, если не в режиме редактирования - выбранный тип АТС показывает его значение в жерех: контроль Label. Не удивительно.
Загрузите список значений для DropDownList в локальный элемент с именем _pbxTypes
в событии OnLoad
формы. Я проверил это - он работает, значения есть.
Теперь моя задача: когда сетка переходит в режим редактирования для определенной строки, мне нужно связать список УАТС, хранящийся в _pbxTypes
.
достаточно просто, я думал - просто захватить выпадающий список объектов в RowEditing
события и приложить список:
protected void grvSecondaryLocations_RowEditing(object sender, GridViewEditEventArgs e)
{
grvSecondaryLocations.EditIndex = e.NewEditIndex;
GridViewRow editingRow = grvSecondaryLocations.Rows[e.NewEditIndex];
DropDownList ddlPbx = (editingRow.FindControl("ddlPBXTypeNS") as DropDownList);
if (ddlPbx != null)
{
ddlPbx.DataSource = _pbxTypes;
ddlPbx.DataBind();
}
.... (more stuff)
}
Trouble - я никогда не получить ничего назад от FindControl
звонка - кажется, что ddlPBXTypeNS
не существует (или не может быть найдено).
Что мне не хватает? Должно быть, это что-то действительно глупое .... но до сих пор, все мои Googling, чтение на элементах управления GridView и запросы друзей не помогли.
Кто может обнаружить недостающее звено? ;-)
Tricky .... Я получаю это событие, но RowState - «Alternate | Edit» - поэтому ваш IF никогда не будет правдой :-) –
OK, я изменил ваш, если для проверки установленного бита «Изменить» (игнорируя любые другие биты, которые могут быть установлены), и теперь это работает как шарм! Спасибо куче !! –
просто изменил код :) – balexandre