none
SP 2010 - page de suivi des collections de sites collab' RRS feed

  • Question

  • Bonjour,

    Dans mon application en SharePoint 2010, je dois créer une page de suivi accessible depuis Central Admin seulement,
    qui affiche la liste (SPList) des sites collaboratifs créés à partir d'un template particulier sur une web application donnée.
    Ma liste contient des données comme le nom du site, l'url du site, le owner du site, le quota utilisé, la date de création du site, etc.

    Ma page ASPX contient les controles suivants :
    - une liste déroulante (WebApplicationSelector) permettant la sélection d'une web application,
    - un bouton "Refresh" qui va remplir la liste et mettre à jour l'affichage après un postback,
    - une zone de webpart qui contient une XsltListViewWebPart pointant sur une liste de données que je purge et que je remplis à nouveau au chargement de la page.

    Voici la logique de la page :

    Lors de son chargement ou au click sur le bouton "Refresh",
    - parcourir tous les sites collaboratifs de la webapp sélectionnée,
    - purger et remplir la liste des sites collaboratifs
    - et dans ma XsltListViewWebPart, je définis l'url de la vue à afficher en utilisant la propriété DefaultViewUrl.

    Sur ma page je dois pouvoir rafraichir, trier, filtrer, et grouper les données comme dans la vue d'une liste quelconque.

    Mon problème est le suivant : la XsltListViewWebPart n'affiche rien à chaque fois qu'on vient pour la première fois sur la page.
    Par contre, lorsque je clique sur le bouton "Refresh", les données s'affichent très bien et correspondent parfaitement avec ce qu'il y a dans ma liste.
    Et ce que je ne comprends pas, c'est que j'appelle la même fonction qui remplit la liste et qui met à jour l'affichage dans la page, pourtant
    le comportement est différent lors du premier chargement et lors du click sur le bouton de rafraichissement des données !

    J'ai essayé de modifier les valeurs des propriétés suivantes :
    - FireInitialRow,
    - AutoRefresh & AutoRefreshInterval,
    - AsyncRefresh,
    - ViewId & ViewGuid,
    - InitialAsyncDataFetch,
    ... mais en vain, je n'arrive pas à obtenir le comportement que je veux.

    Quelqu'un a une idée pour résoudre mon souci ?
    Est-ce que je m'y prends mal pour binder les données avec la webpart ?

    Me diriez-vous qu'utiliser une SPGridView (au lieu d'une XsltListViewWebPart) serait une alternative ?
    mais le hic c'est qu'elle ne fait pas un groupement correcte.
    Le tri et le filtrage fonctionne bien par contre.

    Merci d'avance pour votre aide,
    Okavango

    • Modifié Rivo R jeudi 26 janvier 2012 12:23
    • Déplacé Hengzhe Li mardi 21 février 2012 05:29 merge forum (Origine :Développement Sharepoint 2010)
    jeudi 26 janvier 2012 12:21

Réponses

  • Bonjour

    J'imagine que vous fixez la nouvelle source de donnée de votre xsltwebpart dans la fonction "refresh_click" qui correspond au post back de votre bouton. Cet evenement arrive après le load, et après le binding.

    En principe il vous faut appeller databind() sur votre grid à ce niveau pour qu'ellesoit bien mise à jour. Cependant je ne suis certain que cette méthode soit exposée sur le xsltviewwebpart... à vérifier.

    On est d'accord sur le cycle de vie de la page sauf que j'aurais quand même tendance à vous conseiller de faire l'assignation de la source de donnée dans le OnInit. Ceci dit votre soucis viens je pense plutot de l'assignation de la nouvelle source trop tard, au post back, et sans rapell au databinding.

    jeudi 2 février 2012 10:53

Toutes les réponses

  • Bonjour

    "sur une liste de données que je purge et que je remplis à nouveau au chargement de la page"

    sur quel event ASP de votre page allez vous remplir votre liste ? est-ce que ce remplissage ne passerai pas après que la XsltListViewWebPart soit bindée ?

    vendredi 27 janvier 2012 16:42
  • Bonjour,

    Quand je parle de chargement de la page, je veux dire par là que la totalité de mon code se trouve dans l'évènement Load() de la page. J'y purge et remplis ma liste. Ensuite j'y définis la vue par défaut à afficher dans la XsltListViewWebPart.

    Je pense que le remplissage de la liste se produit avant le binding de la webpart selon moi, car même en déplaçant l'initialisation de la vue par défaut à afficher dans la webpart dans l'évènement PreRender(), j'obtiens exactement le même comportement et le même résultat. Pour rappel et sauf erreur de ma part, dans le cycle de vie d'une page ... les évènements de binding se produisent avant l'évènement PreRender() et après les évènements Load() et LoadComplete().

     

    Okavango

    samedi 28 janvier 2012 17:15
  • Bonjour

    J'imagine que vous fixez la nouvelle source de donnée de votre xsltwebpart dans la fonction "refresh_click" qui correspond au post back de votre bouton. Cet evenement arrive après le load, et après le binding.

    En principe il vous faut appeller databind() sur votre grid à ce niveau pour qu'ellesoit bien mise à jour. Cependant je ne suis certain que cette méthode soit exposée sur le xsltviewwebpart... à vérifier.

    On est d'accord sur le cycle de vie de la page sauf que j'aurais quand même tendance à vous conseiller de faire l'assignation de la source de donnée dans le OnInit. Ceci dit votre soucis viens je pense plutot de l'assignation de la nouvelle source trop tard, au post back, et sans rapell au databinding.

    jeudi 2 février 2012 10:53