有没有办法懒得加载手风琴窗格的数据源?

时间:2012-08-28 17:17:32

标签: c# asp.net ajaxcontroltoolkit

我正在尝试延迟加载手风琴窗格的内容数据源。换句话说,当窗格打开时,它将绑定数据源。我无法找到可以用来触发if (source == null) LoadMe();逻辑的事件。

我知道至少有一百人以前做过这件事。任何想法都会有所帮助。 TIA

1 个答案:

答案 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事件。但就目前而言,这是有效的。