异步扩展多个CollapsiblePanel

时间:2013-08-27 18:21:32

标签: c# asp.net ajax collapsiblepanelextender

我的网页设置如下: 有一个ListView,它有一个SQL表中每个记录的项目。其中每个项目都有一个CollapsiblePanel,可以展开以显示有关给定记录的更多详细信息。

我的问题: 当我展开一个面板,然后等待它完成......一切都很好。但是,如果我尝试一次扩展多个可折叠面板(意味着在第一个面板完全展开之前)...只有最后一个面板展开才会显示其数据。

我的问题: 是否有可能让这些面板中的每一个都异步扩展?看起来很傻,我必须等待一个面板延伸才能扩展另一个面板。

我的aspx: 我通过删除不需要的代码来修改这个aspx,以减少它的混乱。

<asp:UpdatePanel ID="UpdPnlBGList" runat="server" ChildrenAsTriggers="true" UpdateMode="Conditional">
<ContentTemplate>
    <div class="content-box">
        <asp:Panel ID="pnlBGResult" runat="server">
            <asp:ListView ID="lvSummary" runat="server" ItemPlaceholderID="placeholderBGList"
                OnItemDataBound="lvSummary_ItemDataBound" OnItemCommand="lvSummary_ItemCommand">
                <LayoutTemplate>
                    <table runat="server" id="tblList" cellpadding="0" cellspacing="0" border="0" style="table-layout: fixed;">
                        <tr id="placeholderBGList" runat="server">
                        </tr>
                    </table>
                </LayoutTemplate>
                <ItemTemplate>
                    <tr runat="server">
                        <td>
                            <asp:UpdatePanel ID="UpdBgItemTemplate" runat="server" ChildrenAsTriggers="true"
                                UpdateMode="Conditional">
                                <ContentTemplate>
                                    <div class="bgList">
                                        <asp:Panel ID="pnlSummary" runat="server">
                                            <table id="tblBgList" runat="server" cellpadding="0" cellspacing="0" border="0" style="border-collapse: collapse;
                                                border-spacing: 0px;">
                                                <tr>
                                                    <td class="imageColumn">
                                                        <asp:ImageButton ID="imgCollapsible" CssClass="first" ImageUrl="~/Images/branding/plus.gif"
                                                            runat="server" CommandName="ExpandCollapse" Style="cursor: pointer; padding-right: 5px;" />
                                                    </td>
                                                    <td width="600px">
                                                        <asp:Label ID="lblBGName" runat="server" Text='<%# Eval("BGName")%>' CssClass="bgName"></asp:Label>
                                                        <asp:Label ID="lblDatePosted" runat="server" CssClass="datePosted"></asp:Label>
                                                    </td>
                                                    <td colspan="2">
                                                        <div style="float: right;">
                                                            <asp:Label ID="lblAccountNumber" runat="server" CssClass="accountReview"></asp:Label>
                                                            <asp:Label ID="lblAccountNumberText" runat="server" CssClass="accountReview"></asp:Label>
                                                        </div>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td>
                                                    </td>
                                                    <td width="600px">
                                                        <asp:Label ID="lblBillToAddress" runat="server" Text='<%# Eval("BillToAddress")%>'
                                                            CssClass="billToAddress" Style="font-weight: bold;"></asp:Label>
                                                    </td>
                                                    <td>
                                                        <div style="float: right;">
                                                            <asp:ImageButton ID="imgViewAuthLetter" ImageUrl="~/Images/branding/document.jpeg"
                                                                CssClass="first" runat="server" OnClick="imgViewAuthLetter_Click" />
                                                            <asp:LinkButton ID="lnkAuthorizationLetter" runat="server" Text="View authorization letter"
                                                                class="link_button" OnClick="lnkAuthorizationLetter_Click" OnClientClick="dirtySuppress();"
                                                                OnPreRender="addTrigger_PreRender" />
                                                        </div>
                                                    </td>
                                                    <td width="70px" style="float: right;">
                                                        <div style="float: right;">
                                                            <asp:HyperLink ID="lnkExportImage" runat="server" ImageUrl="/Images/branding/export.jpg"
                                                                CssClass="hiperlinkExport" OnClick="dirtySuppress();" />
                                                            <asp:HyperLink ID="lnkExportText" runat="server" Text="Export" CssClass="hiperlinkExport"
                                                                OnClick="dirtySuppress(); precheckURL(this.href); return false;" />
                                                        </div>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td colspan="4" style="padding: 0px;">
                                                        <asp:Panel Style="margin-left: 50px;" ID="pnlDetails" runat="server">
                                                            <of:AccountNumberListControl ID="accountNumberList" runat="server"></of:AccountNumberListControl>
                                                        </asp:Panel>
                                                        <cc1:CollapsiblePanelExtender ID="cpe" runat="Server" TargetControlID="pnlDetails"
                                                            CollapsedSize="0" Collapsed="True" ExpandControlID="imgCollapsible" CollapseControlID="imgCollapsible"
                                                            AutoCollapse="False" AutoExpand="False" ScrollContents="false" ImageControlID="imgCollapsible"
                                                            ExpandedImage="~/Images/branding/minus.gif" CollapsedImage="~/Images/branding/plus.gif"
                                                            ExpandDirection="Vertical" />
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td>
                                                    </td>
                                                    <td colspan="3" style="padding: 0px;">
                                                        <div class="itemSeperator" id="divItemSeperator" runat="server">
                                                            &nbsp;</div>
                                                    </td>
                                                </tr>
                                            </table>
                                        </asp:Panel>
                                    </div>
                                </ContentTemplate>
                            </asp:UpdatePanel>
                        </td>
                    </tr>
                </ItemTemplate>
            </asp:ListView>
            <asp:HiddenField ID="hdfAccountNumberListControlID" runat="server" Value="" />
            <asp:HiddenField ID="hdfAccountNumerID" runat="server" Value="" />
        </asp:Panel>
    </div>
    <of:CustomerSetupExportPopInControl ID="customerSetupExportPopIn" runat="server" />
</ContentTemplate>

我的代码隐藏:

这是展开面板时执行的代码。有几个控件已填充。

private void ExpandBillingGroup(ListViewDataItem item)
{
Label accountNumberLabel;
Label accountNumberText;
HtmlControl itemSeperator;
AccountNumberListControl accountNumberList;

// set properties for fedex account number label and text.
accountNumberLabel = (Label)item.FindControl("lblAccountNumber");
accountNumberLabel.Text = "FedEx account number: ";
accountNumberLabel.CssClass = "fedExAccountNumberLabel";

accountNumberText = (Label)item.FindControl("lblAccountNumberText");
accountNumberText.Text = lvSummary.DataKeys[item.DisplayIndex].Values["FedExAccountNumber"].ToString();
accountNumberText.CssClass = "fedExAccountNumberText";

//set the properties for Export
var lnkExportImage = (HyperLink)item.FindControl("lnkExportImage");
lnkExportImage.Visible = true;
var lnkExportText = (HyperLink)item.FindControl("lnkExportText");
lnkExportText.Visible = true;

//When expanded populate Customer Setup Export control
customerSetupExportPopIn.BillingGroupID = lvSummary.DataKeys[item.DisplayIndex].Values["BillingGroupID"].ToString();

//When expanded populate AccountNumberlistControl
accountNumberList = (AccountNumberListControl)item.FindControl("accountNumberList");
if (accountNumberList != null)
{
    //since we make the AccountNumberListControl not visible on collapse we have to make it visible when we expand
    accountNumberList.Visible = true;

    //Set the properties
    accountNumberList.BillingGroupID = lvSummary.DataKeys[item.DisplayIndex].Values["BillingGroupID"].ToString();
    accountNumberList.FedExAccountNumber = lvSummary.DataKeys[item.DisplayIndex].Values["FedExAccountNumber"].ToString();
    accountNumberList.BillingGroupName = ((Label)lvSummary.Items[item.DisplayIndex].FindControl("lblBGName")).Text;
    accountNumberList.BillToAddress = ((Label)lvSummary.Items[item.DisplayIndex].FindControl("lblBillToAddress")).Text;
    accountNumberList.FirstItemNeedsToExpand = BillingGroupIsResolved;
    accountNumberList.GetListOfAccountNumbers(lvSummary.DataKeys[item.DisplayIndex].Values["BillingGroupID"].ToString(), VendorID);
}

//set the properties for itemSepeartor
itemSeperator = (HtmlControl)item.FindControl("divItemSeperator");
itemSeperator.Attributes.Add("class", "itemSeperatorExpanded");

UpdatePanel upd = (UpdatePanel)item.FindControl("UpdBgItemTemplate");
upd.Update();
}

谢谢, 霍尔特

编辑:修正了语法和标题问题

0 个答案:

没有答案