Question

Je suis à l'aide d'un ListViewByQuery dans un site web-partie.Si j'ai mis le CAML GroupBy pour <GroupBy Collapse='FALSE'> (c'est à direélargi), la partie web fonctionne très bien.Cependant, si je l'ai mis à <GroupBy Collapse='TRUE'>, l'élément s'élargir, mais ensuite est coincé/se bloque sur le "Travail sur elle..." message:

enter image description here

(Je crois que l'ancien message dans SharePoint 2010 "Chargement en cours...").

Voici la copie de travail quand il est pré-déployée:

enter image description here

Ce ne semble pas être une question de JavaScript (testé sur plusieurs navigateurs).

Comment puis-je résoudre ce problème?


De côté:Karine mentionne très semblable à la question sur son blog à l'aide de la ListViewByQuery Web Partie ici.Je vais tester le suggère JavaScript fixer et de faire un rapport, mais je crois que ce n'est qu'une solution de contournement - quelle est la cause sous-jacente et la solution?

Mise à jour:Je ne peux pas obtenir la JS correctif de travail.Je suis de la génération dynamique de l' ListViewByQuery de contrôle dans mon webpart personnalisé (comme apparemment requis) et de tout le JS semble le feu, je ne peux pas déterminer la façon de le déboguer.

Mise à jour 2:A finalement obtenu la JS correctif de travail - l'effondrement a été appelé à deux reprises (de sorte qu'il serait juste d'élargir à nouveau).De suggérer ce que possible de répondre rapidement, mais ne pas l'accepter comme réponse réelle.

Était-ce utile?

La solution

C'est tout simplement la façon dont j'ai obtenu le JavaScript fix/bidouille de travail.Tout d'abord, vous devez pré-développer la ListViewByQuery CAML groupe (Collapse='FALSE').Deuxièmement, le JavaScript s'exécute deux fois et tout simplement s'effondre/élargit le résultat, de sorte qu'il ne semble pas fonctionner en 2013.Donc voici comment j'ai obtenu de travail:

J'ai créer le ListViewByQuery contrôle dynamique (tel que requis/recommander dans doco):

Panel pnlDiv = new Panel();
pnlDiv.ID = "pnlDiv";
pnlDiv.CssClass = "ms-authoringcontrols";

ListViewByQuery lvPdfs = new ListViewByQuery();

..

EnsureChildControls();

pnlDiv.Controls.Add(lvPdfs);
pnlDiv.RenderControl(writer);
RenderChildren(writer);

Comme j'ai eu du mal avec le JavaScript j'ai émis ce côté serveur:

        private void RegisterExpandJavascriptFix()
        {
            ClientScriptManager cs = Page.ClientScript;

            if (!cs.IsClientScriptBlockRegistered(this.GetType(), "CollapseFunc"))
            {
                cs.RegisterClientScriptBlock(this.GetType(), "CollapseFunc", JSExpandFix, true);
            }

            if (!cs.IsStartupScriptRegistered(this.GetType(), "Collapse"))
            {
                cs.RegisterStartupScript(this.GetType(), "CollapseFunc", "collapseDiv();", true);
            }
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                RegisterExpandJavascriptFix();
            }
        }

Et voici le code JavaScript:

private const string JSExpandFix = @"function collapseDiv() {                                                    
                                                    var div = document.getElementById('pnlDiv');
                                                    //alert(div);
                                                    if (div != null) {
                                                        var links = div.getElementsByTagName('a');
                                                        for (var i = 0; i < links.length; i++) {
                                                            if (links[i].href == 'javascript:' && links[i].onclick.toString().indexOf('ExpCollGroup') > -1 && links[i].previousSibling.tagName == 'IMG') {                                                                
                                                                //alert(links[i].onclick.toString());                    
                                                                links[i].click();
                                                            }
                                                        }
                                                    }
                                                }";   

Remarque l' links[i].previousSibling.tagName == 'IMG') check - c'est juste ma façon de s'assurer de clics seulement l' première l'effondrement lien (c'est à direles plus/moins de l'image, plutôt que le texte).

Licencié sous: CC-BY-SA avec attribution
Non affilié à sharepoint.stackexchange
scroll top