GridView la PAGINATION à l'intérieur de UpdatePanel ne fonctionne pas pour le deuxième changement de page, pourquoi?
J'ai deux updatepanels dont l'un d'eux contient un gridview. Le problème est que la Pagination ne fonctionne correctement que pour la première fois.
Voici le balisage:
<asp:UpdatePanel ID="upAnswers" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="true">
<ContentTemplate>
<asp:GridView ID="gvAnswers" runat="server" CssClass="gv" Width="100%" ShowHeader="false" AllowPaging="True" PageSize="2" EnableSortingAndPagingCallbacks="true" OnPageIndexChanging="gvAnswers_PageIndexChanging" AutoGenerateColumns="False" AlternatingRowStyle-BackColor="#eee">
<Columns>
<asp:TemplateField HeaderText="Questions" ShowHeader="False">
<ItemTemplate>
<asp:Label ID="lblQuestions" onclick=<%# Eval("FaqID", "$('.lblAnswers_{0}').toggle('fast')") %> CssClass="block" runat="server" Text='<%# Eval("Title") %>'></asp:Label>
<asp:Panel ID="pnlS1" runat="server" CssClass='<%# Eval("FaqID", "lblAnswers_{0}") %>' style="display: none;">
<asp:Label ID="Label1" runat="server" Text='<%# Eval("Question") %>' CssClass="block bold"></asp:Label>
<asp:Label ID="lblAnswers" runat="server" Text='<%# Eval("Answer") %>'></asp:Label>
</asp:Panel>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</ContentTemplate>
</asp:UpdatePanel>
<asp:UpdateProgress ID="upgAnswers" runat="server" AssociatedUpdatePanelID="upAnswers" DisplayAfter="300">
<ProgressTemplate>
<div id="uiBlock" class="uiBlock">
</div>
</ProgressTemplate>
</asp:UpdateProgress>
et le code-behind:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
GetAnsweredPublicFAQs();
}
}
protected void GetAnsweredPublicFAQs()
{
DataSet ds = cFAQs.getAnsweredPublicFAQs();
gvAnswers.DataSource = ds;
gvAnswers.DataBind();
}
protected void gvAnswers_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
gvAnswers.PageIndex = e.NewPageIndex;
GetAnsweredPublicFAQs();
gvAnswers.DataBind();
upAnswers.Update();
}
Comme ref, j'utilise ASP.NET 4.0 C#.
Tout type d'aide serait très appréciée.
Ce qui concerne,
Kardo
- avez-vous essayé d'utiliser UpdateMode="Toujours"? en outre, mettre ChildrenAsTriggers, sans mettre Trigges est inutile, parce que l'UpdatePanel avec UpdateMode="Conditionnel" sera mis à jour chaque fois qu'un des enfants de contrôle de fait de la publication.
- Ce qui arrive pour la deuxième fois? Tout ce que vous avez dit, c'est que la pagination ne fonctionne correctement que de la première fois.
- la deuxième fois, rien ne se passe.
- lorsque j'essaie UpdateMode="Toujours", ça ne fonctionne pas, même pour la première fois, sans aucune erreur.
- Dans un deuxième temps, frappez-vous la PageIndexChanging événement? Quelle est la valeur de e.NewPageIndex à ce point?
- elle atteint toujours le PageIndexChanging événement et la valeur de l'e.NewPageIndex est comme prévu (concernant le n ° de page je me suis caché, la valeur est correcte). Et le plus important, tout fonctionne très bien sans UpdatePanel.
Vous devez vous connecter pour publier un commentaire.
Changer votre UpdatePanel déclaration de commencer comme ceci:
Chaque fois que j'ai eu du mal avec ces
UpdatePanel
s, je trouve déclarer explicitement les Déclencheurs pour être utile. En particulier lorsque vous êtes à l'aide d'un "non" par défaut de l'événement pour déclencher un AsyncPostBack (SelectedIndexChanged est le "défaut" de l'événement pour le contrôle GridView).Aussi, ChildrenAsTriggers par défaut à true, alors j'ai enlevé qu'à partir de l'annotation.
$(pageLoad() { $("a[rel^='prettyPhoto']").prettyPhoto({ show_title: false, allow_resize: true, theme: 'facebook', deeplinking: false, ie6_fallback: true, social_tools: false }); });
L'autre chose, si cela a des répercussions sur les éléments à l'intérieur de votre UpdatePanel, vous allez avoir besoin de l'appeler après notre async publications en quelque sorte.