我正在尝试延迟加载手风琴窗格的内容数据源。换句话说,当窗格打开时,它将绑定数据源。我无法找到可以用来触发if (source == null) LoadMe();
逻辑的事件。
我知道至少有一百人以前做过这件事。任何想法都会有所帮助。 TIA
答案 0 :(得分:0)
每个标题都有一个链接按钮,我的大小可以填充整个区域,基本上可以点击该区域:
<ajaxToolkit:AccordionPane ID="acpInReview" runat="server">
<Header>
<asp:LinkButton runat="server" Width="100%" Height="25" CssClass="SectionLinkButtons" CommandName="LoadInReview">In Review</asp:LinkButton>
</Header>
如您所见,它有一个相关的命令。在父手风琴中,我设置了在模板中检测到命令时触发的事件处理程序:
<ajaxToolkit:Accordion runat="server" ID="accMainNav" HeaderCssClass="AccordionSection"
CssClass="AccordionMainNav" ContentCssClass="AccordionContent"
RequireOpenedPane="False" SelectedIndex="-1"
OnItemCommand="accMainNav_OnItemCommand" ClientIDMode="Static">
<Panes>
...
然后在后面的代码中,处理程序读取命令并执行它的操作:
protected void accMainNav_OnItemCommand(object sender, CommandEventArgs e)
{
switch(e.CommandName)
{
case "LoadAwaitingControllerApproval":
LoadAwaitingControllerApproval();
break;
case "LoadInReview":
LoadInReview();
break;
case "LoadAwaitingFinalization":
LoadAwaitingFinalization();
break;
}
}
我还将整个内容包装在updatepanel中,以便我可以使用updateprogress控件。实际上,当您单击触发命令的标题时,会发生单击链接按钮的情况。该命令被路由到绑定数据源的事件处理程序。因为它在updatepanel中,所以它是异步发生的,我使用updateprogress控件来显示加载指示符。我可以通过使用覆盖整个区域的div支持链接按钮来改进它,然后给该div一个导致回发的onclick事件。但就目前而言,这是有效的。