6
votes

Pagination dans asp.net; Le nombre de pages ne change jamais après le filtrage

Le problème vient lorsque vous ouvrez une page avec un seul enregistrement. Il remplit le Navmenu avec trois liens; "Premier", "1" et "Dernier".

Pour une raison quelconque, lorsque vous exécutez une requête de recherche qui reviendra plus d'une page, elle affiche toujours uniquement "Premier", "1" et "Dernier". De même, si vous commencez avec quatre pages et que votre requête de recherche ultérieure ne renvoie que deux enregistrements, il affiche toujours «Premier», «1», «2», «3», «4» et «Dernier». Donc, pour une raison quelconque, mais de nombreuses pages que vous commencez avec vous, vous obtiendrez toujours. Comment réinitialiser le compteur / affichage de la page? P>

Voici mon code C # Code-derrière: P>

<asp:Menu ID="NavMenu" runat="server" CssClass="menu"
    IncludeStyleBlock="false" Orientation="Horizontal" width="703px"
    BackColor="#CC3300" EnableViewState="true">
    <Items>
        <asp:MenuItem NavigateUrl="~/Default.aspx" Text="First" Selectable="true" />
    </Items>
</asp:Menu>


2 commentaires

Au lieu de Clear () Vous pouvez utiliser Supprimer (MENUITEM) pour supprimer sélectivement Menuitems .


Pouvez-vous publier votre méthode de chargement de page?


3 Réponses :


1
votes

je ne peux pas le reproduire.

Mon intuition me dit que vous ne postez pas de retour et c'est pourquoi vous devez effacer () les résultats.

Ce code C # fonctionne bien. xxx


2 commentaires

Cette réponse est incorrecte, cela n'a pas corrigé mon problème.


C'est correct, je ne pouvais pas reproduire le problème avec le code exact que vous avez fourni! Et je vous ai donné un indice quant à la direction à poursuivre. Un bowvote pour avoir passé 1/2 heure à essayer de vous aider aussi? Rude. Ne fera plus ça.



1
votes

Vous récupérez les données d'une procédure stockée nommée sp_search mais votre requête dans toutes les exécutions sera identique car vous ne spécifiez aucun paramètre dans votre procédure stockée (en fonction du code que vous avez posté. ). J'ai testé votre code en modifiant la procédure stockée et en envoyez un paramètre à l'adresse et en utilisant NAVMENU.ITEMS.CLEAR () Comme vous l'avez dit et cela fonctionne bien pour moi:

Votre SP devrait être quelque chose comme ceci: xxx

et en c #: xxx

donc dans votre page_load appelez le runthesearch en passant un paramètre qui renvoie un enregistrement: xxx

et quelque part d'autre appelez le la méthode de la référence en passant un paramètre qui renvoie plusieurs enregistrements et résultat serait plus d'une page: xxx


0 commentaires

0
votes

Ceci a finalement été résolu en mettant le menu dans un panneau de mise à jour. Donc, sur le côté aspx, j'ai maintenant:

<div class="clear hideSkiplink" id="NavDiv" style="margin:0 auto; display: table;">
    <asp:UpdatePanel ID="NavUpdatePanel" runat="server" UpdateMode="Conditional">
        <ContentTemplate>
            <asp:Menu ID="NavMenu" runat="server" CssClass="menu" 
                IncludeStyleBlock="false" Orientation="Horizontal" width="703px"
                BackColor="#CC3300" EnableViewState="false">
                <Items> 
                    <asp:MenuItem NavigateUrl="~/Default.aspx" Text="First" Selectable="true" />
                </Items>
            </asp:Menu>
        </ContentTemplate>
    </asp:UpdatePanel>
</div>


0 commentaires