AJAXToolkitのTabContainerに奇妙な問題があります。
ASP.netコントロールとして構築した顧客記録システムについていくつかの見解があります。これらのコントロールは、UpdatePanelsを使用してデータを非同期にロードします。jQueryとjquery.uiを使用して、これらのコントロールを1つのページの別々のタブに配置します。
すべてが泳いで動作します。
最近、私はjQueryタブのハック的なアプローチに少しうんざりしていて、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>
コントロールの1つのマークアップは次のとおりです。
<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>