簡體   English   中英

TabContainer問題

[英]TabContainer Problems

AJAX工具包中的TabContainer有一個奇怪的問題。

我們對作為ASP.net控件構建的客戶記錄系統有幾個視圖。 這些控件使用UpdatePanels異步加載數據。 我們使用jQuery和jquery.ui將這些控件放在單個頁面上的單獨選項卡中。

這一切都暢通無阻。

最近,我對jQuery tab hackish的方法有些厭倦,決定移植所有內容以使用TabContainer。 我希望能夠將選項卡作為對象進行控制。

乍一看,一切正常。 我只是將控件拍到TabContainer的選項卡中,一切看起來都很棒。 但是,由於某種原因,數據綁定控件將丟失其數據。

例如,當我切換頁面時,網格視圖消失了。 帶有OnTextChanged事件的下拉控件在回發時會丟失其數據綁定的值列表。

TabContainer->自定義控件-> UpdatePanel->使用數據綁定層次結構的控件使它擺脫了束手無策的狀態,並且調試器沒有發揮任何作用。 似乎未存儲控件狀態。

我對控制狀態的了解不多,不知道要查找什么。

有任何想法嗎? 這是TabContainer的標記:

<asp:TabContainer ID="tcBanner" runat="server" ActiveTabIndex="0" Width="100%" 
    EnableViewState="False" ScrollBars="Vertical">
    <asp:TabPanel runat="server" HeaderText="Comments" ID="tbComments">
        <ContentTemplate>
            <luBannerControl:Comments ID="commentsTabContent" runat="server" />
        </ContentTemplate>
    </asp:TabPanel>        
    <asp:TabPanel runat="server" HeaderText="General" ID="tbContact">
        <ContentTemplate>
            <luBannerControl:Contact ID="contactTabContent" runat="server" />
        </ContentTemplate>
    </asp:TabPanel>
</asp:TabContainer>

這是其中一個控件的標記:

<asp:UpdatePanel ID="pnlComments" UpdateMode="Conditional" runat="server">
    <ContentTemplate>
        <asp:GridView ID="CommentsGridView" AllowPaging="true" PageSize="20" DataSourceID="BannerSqlDataSource" runat="server" AutoGenerateColumns="False" GridLines="None" CssClass="CommentGrid" HeaderStyle-CssClass="CommentGridHeader" RowStyle-CssClass="CommentRowsEven" AlternatingRowStyle-CssClass="CommentRowsOdd">
            <Columns>
                <asp:BoundField DataField="SPRCMNT_TEXT" HeaderText="Comment" SortExpression="SPRCMNT_TEXT" />
                <asp:BoundField DataField="SPRCMNT_DATE" HeaderText="Created" SortExpression="SPRCMNT_DATE" DataFormatString="{0:M/dd/yyyy}" />
                <asp:BoundField DataField="SPRCMNT_CMTT_CODE" HeaderText="Type" SortExpression="SPRCMNT_CMTT_CODE" />
                <asp:BoundField DataField="SPRCMNT_CTYP_CODE" HeaderText="Source" SortExpression="SPRCMNT_CTYP_CODE" />
                <asp:BoundField DataField="sprcmnt_user_id" HeaderText="User" SortExpression="sprcmnt_user_id" />
            </Columns>
        </asp:GridView>
    </ContentTemplate>
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="txtSearch" EventName="TextChanged" />
        <asp:AsyncPostBackTrigger ControlID="btnClearFilter" EventName="Click" />
    </Triggers>
</asp:UpdatePanel>

確保您的TabContainer的OnDemand屬性已關閉。 我知道一個事實,這可能會導致您的控件(例如GridView)在保留其行的同時丟失其數據,尤其是在動態生成控件的情況下。

通過標記:

<asp:TabContainer ID="tcBanner" runat="server" ActiveTabIndex="0" Width="100%" 
    EnableViewState="False" ScrollBars="Vertical" OnDemand="false" >

通過代碼:

tcBanner.OnDemand = false;

最終與嵌套的TabContainer完全無關。

在將控件添加到TabContainer之前,我在不知不覺中破壞了這些控件,令人驚訝的是,這意味着它們無法像以前那樣起作用。

很抱歉浪費您的集體時間。

謝謝,克利夫

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM