有没有办法延迟加载折叠面板的数据源?



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

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

好吧,我把它搞定了。我对此并不完全满意,但这就是我得到的:

每个标题都有一个链接按钮,我调整了链接按钮的大小以填充整个区域,基本上使该区域可以点击:

<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;
    }
}

我还将整个过程封装在一个更新面板中,以便使用updateprogress控件。因此,本质上,当你点击一个触发命令的标题时,链接按钮就会被点击。该命令被路由到绑定数据源的事件处理程序。由于它在更新面板中,所以它是异步发生的,我使用updateprogress控件来显示加载指示符。我可以通过用一个覆盖整个区域的div来支持链接按钮,然后给该div一个onclick事件来引起回发来改进它。但就目前而言,这是可行的。

最新更新