Domanda

Sto usando un ListViewByQuery in una parte web personalizzata. Se impostare il GroupBy Caml in <GroupBy Collapse='FALSE'> (I.e. ESPANDATO), il WebPart funziona bene. Tuttavia, se lo metto su <GroupBy Collapse='TRUE'>, l'oggetto si espanderà, ma quindi è bloccato / si blocca sul messaggio "Lavorando su di esso ...":

Inserisci Descrizione dell'immagine qui

(Credo che il vecchio messaggio in SharePoint 2010 sia stato "caricamento ...").

Ecco la copia di lavoro quando è pre-ampliato:

Inserisci Descrizione dell'immagine qui

Questo non sembra essere un problema JavaScript (testato su più browser).

Come faccio a risolvere questo?


.

A parte: Karine menziona un problema molto simile sul suo blog utilizzando la parte web ListViewByQuery qui . Testerò la correzione JavaScript suggerita e riporta indietro, ma credo che questo sia solo una soluzione alternativa - qual è la causa sottostante e la soluzione?

Aggiornamento: non riesco a far funzionare la correzione JS. Sto generando dinamicamente il controllo ListViewByQuery nel mio webpart personalizzato (apparentemente richiesto) e mentre il JS sembra sparare, non posso determinare come eseguire il debug.

Aggiornamento 2: Infine ha ottenuto il funzionamento della correzione JS - il crollo è stato chiamato due volte (quindi sarebbe stato nuovamente espandere JSUT). Suggerisce questo come possibile rispondere presto, ma non lo accetterà come risposta effettiva.

È stato utile?

Soluzione

Questo è semplicemente come ho lavorato il problema JavaScript / KLUDY.Innanzitutto, è necessario pre-espandere il gruppo Caml ListViewByQuery (Collapse='FALSE').In secondo luogo, il JavaScript suggerito viene eseguito due volte e collassa / amplia semplicemente il risultato, quindi non sembra funzionare nel 2013. Quindi ecco come ho lavorato:

Creo dinamicamente il controllo ListViewByQuery (come richiesto / consigliabile 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);
.

Come ho avuto problemi con JavaScript l'ho emesso lato server:

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

Ed ecco il 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();
                                                            }
                                                        }
                                                    }
                                                }";   
.

Nota il controllo links[i].previousSibling.tagName == 'IMG') - Questo è solo il modo in cui per assicurarsi che facciano solo clic su First Collapse Link (I.e. L'immagine più / meno, piuttosto che il testo).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a sharepoint.stackexchange
scroll top