Question

J'ai un xsltlistviewwebPart qui montre une structure d'arborescence avec des nœuds. J'ai fait un script JQuery qui définit un cookie qui persiste l'état des nœuds (élargi / effondré) entre les post-retours.

J'ai ajouté le script avec:

_spBodyOnLoadFunctionNames.push("RestoreClickedState");

... de sorte que le script est le dernier à exécuter sur la page.

Le problème est que je reçois des résultats incohérents:

entre le post-planback et mon script, il y a autre chose qui s'effondre les nœuds: par exemple, si j'étends un nœud et laissez 9 fermé, après avoir été fermé, mes 9 nœuds sont fermés, mais mon expansion est fermé aussi bien et je ne peux pas sembler comprendre pourquoi.

Pour d'autres nœuds, si j'étendis un nœud et laissez les autres effondrés, parfois après le post-colombe, un autre noeud n'est pas développé de manière incorrecte au lieu de la bonne.

Voici mon script:

<script>
$(window).unload(function()
{  
RememberClickedState();
});


var items = '';
function RememberClickedState() {
$('.ms-listviewtable tbody[id^="tbod"]').each(function(){
    tid = $(this).attr('id');
    tvisible = ($(this).attr('style') == undefined ||
       $(this).attr('style').indexOf('display: none;') == -1);
    items += tid+':'+tvisible+','
})
$.cookie("itemListState", items);
}
function RestoreClickedState() {
//alert("beginne");
string = $.cookie("itemListState");
//alert(string);
var cookies = string.split(',');
//alert(cookies.length);
$.each(cookies, function(i, val){
    val = val.split(':');
    show = (val[1] == 'true' ? true:false);
    var test = val[0].substring(val[0].length -1, 1);
    var thisID = test.replace("bod", "");  
    var thisImgID = "img_" + thisID;
    if(!show && thisID)
    {
        //alert(thisID + " - " + thisImgID + " hiding");
        ExpCollGroup(thisID, thisImgID);// ,null, show); 
    }       
}); 

//$.cookie("itemListState", null);

} 

_spBodyOnLoadFunctionNames.push("RestoreClickedState");

</script>

Lorsque j'utilise une alerte pour vérifier le contenu des cookies après chaque potage, il affiche correctement tous les cookies, la partie cookie du script fonctionne, mais l'expansion / l'effondrement selon le cookie n'est pas.

Quelqu'un a-t-il une idée, car je m'occupe de cela pendant environ 4 jours maintenant.

Merci beaucoup à l'avance.

meilleures salutations, Andrei

Modifier vient de se rendre compte que tout fonctionne, mais pour le deuxième post-plan. Donc, le premier message après la création du cookie créé les nœuds sont lus correctement à partir du cookie mais à tort expansé / effondré, mais sur le poteau après cela, les nœuds sont correctement étendus / effondrés. Cela me conduit à croire que quelque peu il y a un problème avec _spodyonloadfonctionsNames.Push.

Il ne peut pas être un problème avec l'autre événement $ (fenêtre) .unload car les cookies sont lus correctement, le premier événement fonctionne comme prévu.


Editer 30.07.2012:

Je vais essayer d'être plus clair sur l'arborescence. Par "TreeView" Je veux dire, le composant lui-même est un WebPartpages: XSLTLISTVIEWWEBPART, et oui, il s'agit d'une vue standard, avec les options de regroupement. S'il vous plaît laissez-moi savoir si des informations supplémentaires sont nécessaires.

Était-ce utile?

La solution

Assuming that you used the default grouping options available in SharePoint lists: SharePoint already has this memorization behavior built in, and you are duplicating it.

Here is what could possibly happen:

  • when the page loads, SharePoint expands the node because this is the stored state
  • your script does the same interpretation and collapses it back

Here is what you could try:

  • remove your script and see if the default behavior is just what you need
  • instead of a script that switches states (ExpCollGroup), write a script that explicitly sets the state to expanded or collapsed. This way there is no risk of double switching.
Licencié sous: CC-BY-SA avec attribution
Non affilié à sharepoint.stackexchange
scroll top