AJAX Toolkit中的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>
答案 0 :(得分:0)
这最终与嵌套的TabContainers完全无关。
在将它们添加到TabContainer之前,我在不知不觉中破坏了有问题的控件,令人惊讶的是,这意味着它们的功能与以前不同。
抱歉浪费你的集体时间。
谢谢, 克里夫
答案 1 :(得分:0)
确保您的TabContainer的OnDemand
媒体资源已关闭。我知道这可能会导致您的控件(如GridView)在保留行时丢失数据,尤其是在动态生成控件时。
通过加价:
<asp:TabContainer ID="tcBanner" runat="server" ActiveTabIndex="0" Width="100%"
EnableViewState="False" ScrollBars="Vertical" OnDemand="false" >
通过代码:
tcBanner.OnDemand = false;