Я буду считать, что Panel - это элемент управления ASP с именем Panel, <asp:panel ...
one.
Не имеет значения, где находится ваш элемент управления (внутри или вне сетки), процедура всегдато же самое, вам нужно подключить событие click
к показу / скрытию этой панели.
Работа с Обновление панелей (чтобы избежать полной обратной передачи только для загрузкичасть вашей страницы) в течение года я отказался от этого подхода, и сегодня я просто использую Показать / Скрыть div, например:
<asp:GridView ID="gv" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="lnk" runat="server" Text="Click to open" OnClientClick="showPanel(this);" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:Panel ID="pnlDetails" runat="server" CssClass="panel" style="display:none;">
<h2>
This is a title</h2>
<p>
This is the description</p>
</asp:Panel>
<script type="text/javascript">
function ShowPanel(elm) {
alert('you have clicked me');
}
</script>
каждый раз, когда вы нажимаете на эту кнопку ссылки, она будет
<asp:panel
преобразуется в простой <div>
, так что его легко использовать, вы можете просто проверить, если <div>
уже открыт, затем закрыть его, если он закрыт, открыть его.
используя jQuery для облегчения обработки и написания javascript, вы сделаете эту ShowPanel
функцию такой:
<script type="text/javascript">
var pnlId = '#<%= pnlDetails.ClientID %>';
function ShowPanel(elm) {
if ($(pnlId).is("visible"))
$(pnlId).hide();
else
$(pnlId).show();
}
</script>
вы можете использовать переменную elm
(элемент), если выхочу различить строку кнопки ссылки.