[英]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.