0

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>
4

2 に答える 2

0

TabContainerのOnDemandプロパティがオフになっていることを確認してください。これにより、特にコントロールを動的に生成する場合、GridViewなどのコントロールが行を保持しながらデータを失う可能性があることを私は知っています。

マークアップ経由:

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

コード経由:

tcBanner.OnDemand = false;
于 2012-04-12T19:39:39.397 に答える
0

これは、ネストされたTabContainersとは完全に無関係になりました。

TabContainerに追加する前に、問題のコントロールを無意識のうちに壊してしまいました。驚くべきことに、これは、以前のように機能しなかったことを意味します。

時間を無駄にしてすみません。

ありがとう、クリフ

于 2010-09-24T13:21:01.617 に答える