Witam,
Poniżej prezentuje swój kod:
<asp:GridView ID="GroupsGV" runat="server"
DataSourceID="GroupsSDS"
AutoGenerateColumns="false"
DataKeyNames="Group_Id"
AutoGenerateEditButton="true"
AutoGenerateDeleteButton="true"
EmptyDataText="Nie znaleziono żadnych danych"
OnRowDeleted="RowDeleted"
OnRowEditing="GroupsGV_RowEditing"
OnSelectedIndexChanged="SelectedIndexChanged">
<Columns>
<asp:TemplateField HeaderText="Nazwa">
<ItemTemplate>
<asp:Label ID="SelectGroupsNameL" runat="server" Text='<%# Eval("Name") %>' />
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="EditGroupsNameL" runat="server" Text='<%# Eval("Name") %>' />
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Liczba osób w grupie">
<ItemTemplate>
<asp:Label ID="SelectGroupsNumberOfStudentsL" runat="server" Text='<%# Eval("NumberOfStudents") %>' />
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="EditGroupsNumberOfStudentsL" runat="server" Text='<%# Eval("NumberOfStudents") %>' />
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Rocznik">
<ItemTemplate>
<asp:Label ID="SelectGroupsYearbookL" runat="server" Text='<%# string.IsNullOrEmpty(Eval("Yearbook_Id").ToString()) ? "-- brak --" : Eval("Names") %>' />
</ItemTemplate>
<EditItemTemplate>
<asp:HiddenField ID="EditYearbook_Id" runat="server" Value='<%# Eval("Yearbook_Id") %>' />
<asp:DropDownList ID="EditGroupYearbookDDL" runat="server"
DataValueField="Yearbook_Id"
DataTextField="Names"
DataSourceID="AllYearbooksSDS"
AppendDataBoundItems="true">
</asp:DropDownList>
</EditItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
protected void GroupsGV_RowEditing(object sender, GridViewEditEventArgs e)
{
ButtonField obj = (ButtonField)sender;
HiddenField objHF = (HiddenField)obj.Parent.FindControl("EditYearbook_Id");
DropDownList objDDL = (DropDownList)obj.Parent.FindControl("EditGroupYearbookDDL");
//...
}
Problem polega na tym że nie potrafię odnaleźć kontrolek zawartych w EditItemTemplate, podczas nacisnięcia ButtonField Edit potrzebuje odwołać się to kontrolki DropDownList oraz HiddenField utworzonej akurat w tym wierszy gdzie aktywowałem edycje. Jak to wykonać?
p.s. Próbowałem też takiego sposobu, jednak otrzymuje komunikat że index wykracza poza zakres tzn że jest ujemny więc edycja w tym momencie ma wartość -1
HiddenField objHF = (HiddenField)GroupsGV.Rows[GroupsGV.EditIndex].FindControl("EditYearbook_Id");
DropDownList objDDL = (DropDownList)GroupsGV.Rows[GroupsGV.EditIndex].FindControl("EditGroupYearbookDDL");