Не удается найти раскрывающийся список в событии RowDataBound - PullRequest
0 голосов
/ 20 декабря 2011

Я следую этому примеру http://www.codeproject.com/KB/webforms/Editable_GridView.aspx, чтобы создать редактируемый элемент управления GridView. У меня есть этот код в моем GridView:

<asp:TemplateField HeaderText="Negócio">
<ItemTemplate> 
    <asp:Label ID="lblNegocio" runat="server" Text='<%# Eval("Negocio") %>'></asp:Label> 
</ItemTemplate> 
<EditItemTemplate> 
    <asp:DropDownList ID="ddlNegocio" runat="server" /> 
</EditItemTemplate> 
<FooterTemplate> 
    <asp:DropDownList ID="ddlNewNegocio" runat="server" />
</FooterTemplate> 

Теперь я пытаюсь заполнить раскрывающийся список в EditItemTemplate некоторыми динамическими значениями, как показано в примере, в событии RowDataBound сетки. Но когда я делаю это, метод FindControl всегда возвращает Nothing:

Protected Sub gdvRegraRotationDefault_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles gdvRegraRotationDefault.RowDataBound
If e.Row.RowType = DataControlRowType.DataRow Then
    Dim ddlNegocio As DropDownList = e.Row.FindControl("ddlNegocio")
End If

End Sub

Если я не могу найти раскрывающийся список, я не могу загрузить в него значения, и когда я собираюсь редактировать запись, она будет пустой.

Может кто-нибудь мне помочь?

Спасибо (:

Ответы [ 3 ]

3 голосов
/ 20 декабря 2011

Пожалуйста, используйте RowEditing-Event, поскольку ваш DropDownList должен отображаться только при нажатии Edit. Но сначала вам нужно заново связать GridView, поскольку теперь GridView должен отображать различные элементы управления для строки редактирования:

protected void gdvRegraRotationDefault_RowEditing(object sender, GridViewEditEventArgs e)
{
    gdvRegraRotationDefault.EditIndex = e.NewEditIndex;
    gdvRegraRotationDefault.DataBind();

    GridViewRow row = gdvRegraRotationDefault.Rows[e.NewEditIndex];
    DropDownList ddl = row.FindControl("ddlNegocio") as DropDownList;

    //now do databinding for DropDownList
}
2 голосов
/ 20 декабря 2011

FindControl всегда возвращает ноль, потому что когда вы в событии RowDataBound, вы можете получить только метку.

Если вы хотите заполнить DropDownList при нажатии кнопки редактирования в сетке, вам нужно использовать событие GridViewRowEditing.

0 голосов
/ 20 декабря 2011

В событии RowDataBound просто добавьте следующее условие:

if (myGridView.EditIndex == e.Row.RowIndex)
{
     //do work
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...