Возможно ли иметь два шаблона элементов в одном поле шаблона? Это мой текущий код и он не работает, потому что, когда я запускаю его e.Row.FindControl ("gvQuoteItems") всегда возвращает нуль:Два шаблона элементов в одном поле шаблона?
ASPX:
<asp:TemplateField ItemStyle-Width="50px">
<ItemTemplate>
<img alt="" style="cursor: pointer" src="images/plus.png" />
<asp:Panel ID="pnlQuoteItems" runat="server" Style="display: none">
<asp:GridView ID="gvQuoteItems" runat="server" AutoGenerateColumns="false" CssClass="GridView" OnRowDeleting="gvQuote_RowDeleting" ShowFooter="True">
<Columns>
<asp:CommandField ShowDeleteButton="True" />
<asp:BoundField DataField="QuoteItemID" HeaderText="QuoteItemID" SortExpression="QuoteItemID" Visible="false" />
<asp:BoundField DataField="Category" HeaderText="Category" SortExpression="Category" Visible="false" />
<asp:BoundField DataField="Cover" HeaderText="Cover" SortExpression="Cover" />
<asp:BoundField DataField="CoverType" HeaderText="Cover Type" SortExpression="CoverType" Visible="false" />
<asp:BoundField DataField="SumInsured" HeaderText="Sum Insured" SortExpression="SumInsured" />
<asp:BoundField DataField="Rate" HeaderText="Rate" SortExpression="Rate" />
<asp:BoundField DataField="AnnualPremium" HeaderText="Annual Premium" SortExpression="AnnualPremium" />
<asp:BoundField DataField="MonthlyPremium" HeaderText="Monthly Premium" SortExpression="MonthlyPremium" />
</Columns>
<FooterStyle BackColor="#022439" Font-Bold="True" ForeColor="White" />
<EmptyDataTemplate>
No Data To Display!
</EmptyDataTemplate>
</asp:GridView>
</asp:Panel>
</ItemTemplate>
<ItemTemplate>
<img alt="" style="cursor: pointer" src="images/plus.png" />
<asp:Panel ID="pnlMotorQuoteItems" runat="server" Style="display: none">
<asp:GridView ID="gvMotorQuoteItems" runat="server" AutoGenerateColumns="false" CssClass="GridView" OnRowDeleting="gvQuote_RowDeleting" ShowFooter="True">
<Columns>
<asp:CommandField ShowDeleteButton="True" />
<asp:BoundField DataField="QuoteItemID" HeaderText="QuoteItemID" SortExpression="QuoteItemID" Visible="false" />
<asp:BoundField DataField="Category" HeaderText="Category" SortExpression="Category" Visible="false" />
<asp:BoundField DataField="Year" HeaderText="Year" SortExpression="Year" />
<asp:BoundField DataField="MakeAndModel" HeaderText="Make And Model" SortExpression="MakeAndModel" />
<asp:BoundField DataField="NCB" HeaderText="NCB" SortExpression="NCB" />
<asp:BoundField DataField="Cover" HeaderText="Cover" SortExpression="Cover" />
<asp:BoundField DataField="CoverType" HeaderText="Cover Type" SortExpression="CoverType" Visible="false" />
<asp:BoundField DataField="SumInsured" HeaderText="Sum Insured" SortExpression="SumInsured" />
<asp:BoundField DataField="Rate" HeaderText="Rate" SortExpression="Rate" />
<asp:BoundField DataField="AnnualPremium" HeaderText="Annual Premium" SortExpression="AnnualPremium" />
<asp:BoundField DataField="MonthlyPremium" HeaderText="Monthly Premium" SortExpression="MonthlyPremium" />
</Columns>
<FooterStyle BackColor="#022439" Font-Bold="True" ForeColor="White" />
<EmptyDataTemplate>
No Data To Display!
</EmptyDataTemplate>
</asp:GridView>
</asp:Panel>
</ItemTemplate>
</asp:TemplateField>
Code-за:
if (e.Row.RowType == DataControlRowType.DataRow)
{
int categoryID = int.Parse(gvQuote2.DataKeys[e.Row.RowIndex].Value.ToString());
if (categoryID == 16)
{
GridView gvQuoteItems = e.Row.FindControl("gvMotorQuoteItems") as GridView;
gvQuoteItems.DataSource = _QuoteBLL._GetMotorQuoteItemsDataTable(quote.QuoteID);
gvQuoteItems.DataBind();
}
else
{
GridView gvQuoteItems = e.Row.FindControl("gvQuoteItems") as GridView;
gvQuoteItems.DataSource = _QuoteBLL._GetQuoteItemsDataTable(quote.QuoteID, categoryID);
gvQuoteItems.DataBind();
}
}
Когда я пытаюсь запустить выше, как есть, e.Row.FindControl ("gvQuoteItems") всегда возвращает null. Но если я удалю второй ItemTemplate, он отлично работает. Но вы видите, что одна из строк имеет разные столбцы (gvMotorQuoteItems). Как я могу это сделать?