IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Ajax, GridView et Paging


Sujet :

ASP.NET

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    331
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 331
    Points : 180
    Points
    180
    Par défaut Ajax, GridView et Paging
    Bonjour,

    J'essaye de charger un tableau de type gridView depuis une commande Ajax.

    J'ai un master (template de page), une page Index qui implémente le master.

    Dans mon Index.aspx, j'ai ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
        <script language="javascript" type="text/javascript">
            function loadGrid(post) {
                xmlHttp = GetXmlHttpObject(grid_callBack);
                xmlHttp_Send('POST', xmlHttp, 'IndexGrid.aspx', "grid=" + post);
            }
     
            function grid_callBack() {
                if (xmlHttp.readyState == 4 || xmlHttp.readyState == 'complete') {
                    AjaxTable.innerHTML = xmlHttp.responseText;
     
                }
     
            }
        </script>
     
        <div id="AjaxTable" style=" margin-bottom:20px;margin-left:10px;float: left; width: 80%;">
     
        </div>
    La page IndexGrid.aspx me renvoie un gridView.
    Jusque là, tout va bien.

    La difficulté intervient lorsque je voudrais utiliser le sort ou le pagging de mon gridView...
    Le sort et le paging devrait être géré par IndexGrid, appelé en Ajax par ma page Index, mais je ne sais pas du tout comment m'y prendre.

    Une idée ?

  2. #2
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 506
    Points
    9 506
    Par défaut
    Salut,

    Tu n'utilises pas un UpdatePanel?

    A+
    "Winter is coming" (ma nouvelle page d'accueil)

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    331
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 331
    Points : 180
    Points
    180
    Par défaut
    Euuuh

    Je ne connais pas ... je vais regarder pi je reviendrai si ce n'est toujours pas concluant
    merci

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    331
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 331
    Points : 180
    Points
    180
    Par défaut
    Alors donc...

    Dans mon master :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <form id="form1" runat="server">
    	<asp:ScriptManager ID="scriptMgr" runat="server" />
    		<div id="mainContent">
    			<asp:ContentPlaceHolder ID="CONTENT" runat="server">
    			</asp:ContentPlaceHolder>
    		</div>
    </form>
    Dans mon content (page fille)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    <script language="javascript" type="text/javascript">
    	function loadGrid(post) {
    		xmlHttp = GetXmlHttpObject(grid_callBack);
    		xmlHttp_Send('POST', xmlHttp, 'IndexGrid.aspx', "grid=" + post);
    	}
     
    	function grid_callBack() {
    		if (xmlHttp.readyState == 4 || xmlHttp.readyState == 'complete') {
    			AjaxTable.innerHTML = xmlHttp.responseText;
    		}
    	}
    </script>
     
    <div class="item">
    	<a href="#" onclick="loadGrid('MA_CLE');">
    		<asp:Label runat="server" ID="lblTextBidon" />
    	</a>
    </div>
     
    <div id="AjaxTable" style=" margin-bottom:20px;margin-left:10px;float: left; width: 80%;">
    </div>
    Et dans la page appelé en Ajax
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    <asp:updatepanel id="UpdatePanel1" updatemode="Conditional" runat="server">
        <ContentTemplate>
            <asp:gridview runat="server" id="gv" autogeneratecolumns="False" cellpadding="4"
                forecolor="#333333" gridlines="None" style="margin-top: 15px" width="100%" allowpaging="True"
                pagesize="20" onpageindexchanging="gv_PageIndexChanging">
                <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
                <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
                <PagerStyle BackColor="#D6DFF7" ForeColor="#215dc6" HorizontalAlign="Center" />
                <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
                <HeaderStyle BackColor="#D6DFF7" Font-Bold="True" ForeColor="#215dc6" />
                <EditRowStyle BackColor="#999999" />
                <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
            </asp:gridview>
        </ContentTemplate>
    </asp:updatepanel>
    J'ai donc une master page, et une page content qui contient un div AjaxTable.
    Ce div est rempli via une commande Ajax et il est destiné à contenir un gridView.

    Je voudrait pouvoir gérer le pagging du gridview contenu dans mon div AjaxTable.

    Et actuellement j'ai l'erreur suivante :
    The control with ID 'UpdatePanel1' requires a ScriptManager on the page. The ScriptManager must appear before any controls that need it.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    331
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 331
    Points : 180
    Points
    180
    Par défaut
    Je m'auto-répond

    J'ai viré la gestion en ajax et j'ai mis le gridview directement dans le content...

    Et j'ai l'erreur suivante :

    Microsoft JScript runtime error: Sys.ArgumentTypeException: Object of type 'Sys._Application' cannot be converted to type 'Sys._Application'.
    Parameter name: instance

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    331
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 331
    Points : 180
    Points
    180
    Par défaut
    Alors, je suis partie d'un exemple simple pour comprendre comment fonctionne les updatepanel & co

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    <%@ Page Language="C#" AutoEventWireup="true" %>
     
    <script runat="server"> 
        protected void UpdateButton_Click(object sender, EventArgs e) 
        { 
            System.Threading.Thread.Sleep(5000); 
        } 
    </script>
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
     
    <body>
            <form id="form1" runat="server">
                <asp:ScriptManager ID="ScriptManager1" runat="server" />
                <asp:UpdateProgress runat="server" id="PageUpdateProgress">
                    <ProgressTemplate>
                        Loading...
                    </ProgressTemplate>
                </asp:UpdateProgress>
                <asp:UpdatePanel runat="server" id="Panel">
                    <ContentTemplate>
                        <asp:Button runat="server" id="UpdateButton" onclick="UpdateButton_Click" text="Update" />
                    </ContentTemplate>
                </asp:UpdatePanel>
            </form>
        </body>
    </html>
    L'update s'effectue bien et uniquement le panel est mise à jour à priori.. cependant je n'ai pas le message "Loading..." de mon UpdateProgress. Je ne comprend pas pourquoi...

Discussions similaires

  1. [Prototype] Rafraîchissement AJAX d'une page contenant du js
    Par Core8 dans le forum Bibliothèques & Frameworks
    Réponses: 4
    Dernier message: 27/06/2007, 11h11
  2. navigation en ajax dans les page php
    Par speedylol dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 19/10/2006, 15h58
  3. [AJAX] probleme appelle page XML sur autre serveur
    Par ldcarpathes dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 14/08/2006, 18h35
  4. Réponses: 10
    Dernier message: 06/07/2006, 10h29
  5. [AJAX] Formulaire prépopuler avec du ajax dans la page
    Par shwin dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 31/10/2005, 15h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo