У меня есть веб-страница .NET 4, которая содержит пользовательский элемент управления со следующим:
<asp:ScriptManagerProxy ID="ScriptManagerProxy1" runat="server">
</asp:ScriptManagerProxy>
<asp:LinkButton ID="btnExpand" runat="server" Text="Expand..." ClientIDMode="AutoID"
OnClick="btnExpand_Click"></asp:LinkButton>
<asp:Label ID="btnDummy" runat="server"></asp:Label>
<asp:Panel ID="pnlMyPanel" runat="server">
<p>content</p>
</asp:Panel>
<ajaxToolkit:CollapsiblePanelExtender ID="cpeMyPanel" runat="server"
TargetControlID="pnlMyPanel" Collapsed="True" ExpandControlID="btnDummy"
CollapseControlID="btnDummy" BehaviorID="cpe">
</ajaxToolkit:CollapsiblePanelExtender>
При нажатии кнопки «Развернуть» выполняется следующий код:
protected void btnAddComment_Click(object sender, EventArgs e)
{
string script = "var cpeMyPanel = $find('" + cpeMyPanel.BehaviorID + "');\r\n" +
"if (cpeMyPanel != null)\r\n" +
" cpeMyPanel.expandPanel();\r\n" +
"else\r\n" +
" alert(cpeMyPanel is null');";
ScriptManager.RegisterStartupScript(Page, Page.GetType(),
"Expand", script, true);
}
Когда скрипт запускается в браузере, я получаю предупреждение, но $ find () всегда возвращает ноль.Конечная цель заключается в том, что когда пользователь нажимает кнопку, я хочу выполнить некоторый код на сервере (например, подготовить некоторый контент) перед расширением панели.
Есть идеи, что мне может не хватать?Есть ли лучший способ сделать это?
Заранее спасибо,
Дан