Problème étrange lié à TabContainer dans AJAX Toolkit.Problèmes liés à TabContainer
Nous avons plusieurs vues dans un système d'enregistrement client que nous avons construit en tant que contrôles ASP.net. Ces contrôles utilisent UpdatePanels pour charger les données de manière asynchrone. Nous utilisons jQuery et jquery.ui pour placer ces contrôles dans des onglets séparés sur une seule page.
Ce qui fonctionne tout nager. Dernièrement, je me suis un peu fatigué de l'approche de jQuery tab hackish et j'ai décidé de tout porter pour utiliser TabContainer. Je veux pouvoir contrôler les onglets comme des objets.
À première vue, tout fonctionne parfaitement. Je viens de gifler les contrôles dans des onglets dans un TabContainer et tout semblait bien. Toutefois, pour une raison quelconque, les contrôles de base de données perdent leurs données.
Par exemple, les vues de la grille disparaissent lorsque je change de page. Un contrôle déroulant avec un événement OnTextChanged perd sa liste de valeurs de base de données lors de la publication. Quelque chose à propos du TabContainer -> Custom Control -> UpdatePanel -> Le contrôle qui utilise la hiérarchie de la liaison de données la jette à la dérive et le débogueur ne perd rien. Il semble que l'état de contrôle ne soit pas stocké. Je ne connais pas assez l'état du contrôle pour savoir ce qu'il faut rechercher.
Des idées? Voici le balisage pour la 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>
Voici le balisage pour l'un des contrôles:
<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>
J'ai rencontré un problème similaire où ayant le conteneur onglet dans un formview complètement effacé les données persistance de liaison. Malheureusement, je n'ai pas de lien pour vous, mais je peux vous dire que la réponse était manuellement attraper l'événement onitemdatabound et fondamentalement pirater viewstate pour le faire fonctionner. Personnellement, je serais très méfiant des contrôles AjaxControlToolkit. Ils sont floconneux au mieux. –
Je me suis juste souvenu un peu à ce sujet. Vous avez dû vous connecter manuellement à l'événement iteminserting, etc.et pirater les valeurs en utilisant des choses comme 'e.OldValues [" ID "] = OldConsultationPackValues.ID;'. Eew. http://forums.asp.net/p/1073244/1571887.aspx mais je m'égare. Je sais que ce n'est pas exactement le même problème. –
Yikes. Ce n'est pas amusant. J'espérais que c'était une omission de ma part, pas un problème avec tout le contrôle. Quelqu'un d'autre a des pensées ou devrais-je simplement abandonner cette tentative? – clifgriffin