1

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

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

4

1 回答 1

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

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

于 2012-08-28T19:53:48.283 回答