Мой TT.aspx:не удается получить доступ к DropDownList в EditItemTemplate внутри Gridview
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1" AutoGenerateEditButton="true" OnRowEditing="GridView1_RowEditing" >
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:Literal ID="lit1" Text='<%#Eval("E_Name")%>' runat="server">
</asp:Literal>
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList ID="Eq" AppendDataBoundItems="true" runat="server" DataSourceID="SqlDataSource2" DataTextField="Name" DataValueField="Name">
</asp:DropDownList>
</EditItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>" SelectCommand="SELECT [E_Name], [Problem], [Solution] FROM [Equipment] WHERE ([O_ID] = @O_ID)">
<SelectParameters>
<asp:QueryStringParameter Name="O_ID" QueryStringField="TT" Type="Int32" />
</SelectParameters>
</asp:SqlDataSource>
<asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>" SelectCommand="SELECT [Name] FROM [Parts]">
</asp:SqlDataSource>
Мои TT.aspx.cs
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
Literal xx = (Literal)GridView1.Rows[e.NewEditIndex].FindControl("lit1");
String x = xx.Text;
DropDownList x1 = (DropDownList)GridView1.Rows[e.NewEditIndex].FindControl("Eq");
x1.SelectedValue = x;
}
Я новичок в asp.net и я только тестирование с этим кодом. Проблема в том, что второй FindControl("Eq")
всегда возвращает null
, а первый (для Literal) возвращает правильное значение. Я попытался настроить индекс редактирования gridview на e.NewEditIndex, но, похоже, не работает.
В принципе, я хочу, чтобы пользователь нажимал кнопку «Изменить» в строке, в раскрывающемся списке выбирается исходное значение базы данных, которое находится на ярлыке.
Может ли кто-нибудь провести меня через это, пожалуйста?
проверки этого http://stackoverflow.com/questions/12247279/binding-dropdownlist-inside-gridview-edititemtemplate –
Я уже проверил это, прежде чем просить, но я не Посмотрите, как это связано. Я говорю это, потому что он реализует код в методе 'RowDataBound', пока я реализую его в методе' RowEditing'. Также я уже пробовал «GridView1.EditIndex = e.NewEditIndex;», но это не сработало. Поправьте меня, если я ошибаюсь, пожалуйста. – Mohammad