Fehler in meinem benutzerdefinierten WebPart: Der versuchte Betrieb ist verboten, da die vom Administrator durchgesetzte Liste der Listenansicht überschreitet
-
29-09-2020 - |
Frage
Ich verwende SharePoint 2010. Ich habe ein benutzerdefiniertes WebPart erstellt.In diesem WebPart ist es möglich, ein neues Element hinzuzufügen.Bevor ich diesen neuen Artikel hinzufüge, muss ich einige Werte aus Dropdown-Boxen auswählen.Im Ereignis-Empfänger der letzten DropdownBox tue ich dies im Code:
generasacodicetagpre.Wenn ich zur Liste "apparaat" gehe, sehe ich dort 5002 Artikel.Wenn ich die Einstellungen der Liste aufhielt, sehe ich diese Info:
5002-Artikel (Die Thenbold für diese Listenansicht ist 5000).
Wenn ich die Liste hat "apparaat", ist alles in Ordnung.Ich versuche, 2 Artikel hinzuzufügen und funktioniert in Ordnung.
Warum mein benutzerdefinierter WebPart mir die Thenbold-Grenze-Excetpion gibt und die GUI funktioniert gut?
Lösung
Ich habe die Lösung von mir gefunden.Ich habe einen Whileloop erstellt.Es loops in dieser While-Schleife, bis die Zählung der Gesamtstücke erreicht ist.Innerhalb der Schleife nehme ich die ersten Artikel von 1999 und fügen Sie es einer Liste hinzu.Danach nehme ich die zweiten 1999 Artikel.Es wird diese Logik erledigen, bis Sie die Gesamtanzahl der Artikel erreicht haben.Danach haben Sie eine Liste mit allen Elementen und können sie dem Repeater hinzufügen.Der Grund, warum ich 1999 Artikel genutzt habe, ist, weil es möglich ist, dass die Drossel ab 5000 bis 2000 abnehmen kann. Der benutzerdefinierte Code funktioniert dann auch.
Andere Tipps
In der Reload-Funktion, wenn Sie Tolist () aufrufen, zwingt es den Datenkontext, um die Abfrage auszugeben.An diesem Punkt in Ihrem Code haben Sie keine Filter angegeben (wobei Klausel), sodass alle Datensätze gelesen werden.(Nun, versuchte, gelesen zu werden.)
Die Eigenschaft von DataSource kann eine iQueryable-Quelle akzeptieren, also entfernen Sie einfach die Tolist-Anrufe (ändern Sie auch das Reloadfunctions-Verfahren), und Sie sollten in Ordnung sein.
linq auf SharePoint-Abfragen verfügen über eine Standard-Zeilengrenze von maximal in int, was 2147483647 ist und anscheinend nicht geändert werden kann.Ihre Anfrage gibt wahrscheinlich mehr als 5000 Artikel zurück und überschreitet die Schwellenwerte.
Um sicherzustellen, dass Sie den Schwellenwert nicht überschreiten, müssen Sie das sprätisierte Objekt verwenden und Ihre Anfrage in CAML schreiben und die Rowlimit-Eigenschaft auf 5000 einstellen. Sie benötigen so etwas.Ändern Sie die CAML-Abfrage.
generasacodicetagpre.Dies erklärt, was los ist:
Der versuchte Betrieb ist verboten, da er die Listenansicht überschreitet Schwellenwert, der vom Administrator erzwungen wird
Es ist vom Administrator auf einer Liste von der zentralen Verwaltung in der Webanwendung festgelegt!
Kannst du Central Admin -> Anwendungsmanagement -> verwalten Webanwendungen ->
Hiermit können Sie ein Popup-Feld mit den vom Administrator festgelegten WebApplication-Einstellungen geben. Wenn Sie nach unten scrollen, sehen Sie
Ich begegne dieses Problem, wenn ich Workflows auf der Liste leiten kann, erzeugt er denselben Fehler, aber dies ist auf die
Ich verstehe, dass einige Leute sagen, dass die Rücksendung aller Daten falsch ist, ja, das trifft etwas Effekt zu ... was ist, wenn Sie alles brauchen? Was ist, wenn Sie über 1 Million Datensätze verfügen? Ich weiß, dass es andere Lösungen gibt, aber dies ist eins und ist leicht, innerhalb der zentralen Admin-Einstellungen zu korrigieren, und wenn Ihr Server die Belastung umgehen kann, ist dies eine einfache Option.
Gibt die maximale Anzahl der Liste oder Bibliotheksartikel an, die eine Datenbank Die Bedienung, z. B. eine Abfrage, kann sich gleichzeitig verarbeiten. Operationen das Überschreiten Sie dieses Limit.
Um Ihnen Zeit zu geben, alternative Pläne zu erstellen, warnt SharePoint 2010 Sie Auf der Seite Listeneinstellungen, wenn Ihre Liste 3.000 Artikel überschritten hat. Das Warnung enthält einen Hilfeslink zu diesem Thema.
Dies ist ein erwartetes Verhalten - SharePoint hat eine Funktion namens 'Query Drosseln', die darauf ausgelegt ist, ineffiziente Listenabfragen zu verhindern, dass die Leistung für Benutzer nachteilig beeinträchtigt wird.
Dieses Limit ist auf 5000 eingestellt, und dies sollte wahrscheinlich
Nun gibt es einige Möglichkeiten, die Abfragedrossel zu mildern. Erstens können Sie Spaltenindizes in Ihrer Liste verwenden. So wie das Abfragen einer nicht komplexen SQL-Tabellenspalte einen Tabellen-Scan zwingt, dauert das Abfragen einer nicht komplexen Listenspalte dasselbe. Wenn diese Liste mehr als 5000 Artikel enthält, haben Sie die Drosselklappe. Eine indizierte Spalte bedeutet jedoch, dass Sie einfach die benötigten Zeilen abrufen können.
Wenn Sie mit jedem Element in einer großen Liste anschalben müssen, gibt es auch die Contentiterator-Steuerung - dies ist jedoch langsam, da er mehrere Abfragen verwendet, um die relevanten Elemente entweder jeweils einzeln oder in Chargen zu erhalten.
Elemente Abrufen von Einzelteilen:
generasacodicetagpre.Abrufen von Elementen in Chargen:
generasacodicetagpre.Dies könnte helfen: http://www.novolocus.com/2012/07/09/dealing-with-Large-lists-part-Wer-With-Large-Listling-und-und-Wie -Er-urset-schwierigkeit /