Frage

Ich benutze ein ListViewByQuery in einem benutzerdefinierten Webpart.Wenn ich die Kamera einstelle GroupBy zu <GroupBy Collapse='FALSE'> (also.erweitert) funktioniert das Webpart einwandfrei.Wenn ich es jedoch auf setze <GroupBy Collapse='TRUE'>, das Element wird erweitert, bleibt dann aber hängen / hängt an der "Daran arbeiten..." Nachricht:

enter image description here

(Ich glaube, die alte Nachricht in SharePoint 2010 lautete "Laden...").

Hier ist die Arbeitskopie, wenn sie vorexpandiert ist:

enter image description here

Dies scheint kein JavaScript-Problem zu sein (getestet in mehreren Browsern).

Wie behebe ich das?


Beiseite:Karine erwähnt ein sehr ähnliches Problem in ihrem Blog mit dem ListViewByQuery Webparts hier.Ich werde den vorgeschlagenen JavaScript-Fix testen und Bericht erstatten, aber ich glaube, dies ist nur eine Problemumgehung - was ist die zugrunde liegende Ursache und Lösung?

Update:Ich kann den JS-Fix nicht zum Laufen bringen.Ich generiere dynamisch das ListViewByQuery steuerung in meinem benutzerdefinierten Webpart (wie anscheinend erforderlich) und während das JS zu feuern scheint, kann ich nicht bestimmen, wie es zu debuggen ist.

Aktualisierung 2:Endlich hat der JS-Fix funktioniert - der Zusammenbruch wurde zweimal aufgerufen (also würde er sich nur wieder erweitern).Werde dies bald als mögliche Antwort vorschlagen, aber nicht als tatsächliche Antwort akzeptieren.

War es hilfreich?

Lösung

So habe ich einfach den JavaScript-Fix / Kludge zum Laufen gebracht.Erstens müssen Sie das vorexpandieren ListViewByQuery CAML-Gruppe (Collapse='FALSE').Zweitens wird das vorgeschlagene JavaScript zweimal ausgeführt und reduziert / erweitert das Ergebnis einfach, sodass es 2013 anscheinend nicht funktioniert.Also hier ist, wie ich zum Arbeiten gekommen bin:

Ich erstelle die ListViewByQuery dynamische Steuerung (nach Bedarf / Empfehlung in 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);

Da ich Probleme mit JavaScript hatte, habe ich es serverseitig ausgegeben:

        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();
            }
        }

Und hier ist das 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();
                                                            }
                                                        }
                                                    }
                                                }";   

Beachten Sie die links[i].previousSibling.tagName == 'IMG') überprüfen Sie - dies ist nur mein Weg, um sicherzustellen, dass nur auf das geklickt wird erst verknüpfung reduzieren (d. h.das Plus / Minus-Bild und nicht der Text).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit sharepoint.stackexchange
scroll top