SharePointCommunity
Die deutschsprachige Community für SharePoint, Microsoft 365, Teams, Yammer und mit Azure

Sponsored by

Willkommen im Forum Archiv.
Einträge sind hier nicht mehr möglich, aber der Bestand von 12 Jahren SharePoint-Wissen ist hier recherchierbar.




listbox aktualisieren

Unbeantwortet Dieser Beitrag hat 41 Antworten

Ohne Rang
131 Beiträge
Thilo1992 erstellt 5 Apr. 2012 12:21
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hi,

wie aktualisiere ich eine listbox ohne die Seite neu zu laden?

UpdatePanel funktioniert nicht.

Alle Antworten

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 5 Apr. 2012 13:44
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ajax

Wenn Du das etwas genauer erläuterst, kann man vielleicht auch mehr dazu sagen.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
131 Beiträge
Thilo1992 Als Antwort am 5 Apr. 2012 13:54
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ich fülle eine Listbox in einer Schleife, in einem Thread. Nachdem die Listbox gefüllt wurde soll der Inhalt auch angezeigt werden, am besten wärs wenn dabei nicht die komplette Seite neu geladen wird.

Ich habe es schon mit dem UpdatePanel versucht, aber da passiert nichts und die Listbox ist auch mit Werten gefüllt, das habe ich geprüft.

Die Listbox ist in einem Webpart.

Ohne Rang
30 Beiträge
Juergen Keimeleder Als Antwort am 5 Apr. 2012 13:57
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Könnte über die Webpart-Einstellungen -> Ajax-Optionen -> Asynchrone automatische Aktualisierung aktivieren konfiguriert werden.

Ohne Rang
131 Beiträge
Thilo1992 Als Antwort am 5 Apr. 2012 14:11
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Wo kann man das Einstellen?

Ohne Rang
30 Beiträge
Juergen Keimeleder Als Antwort am 5 Apr. 2012 14:17
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Geh in den Editier-Modus der Seite (Seite - Seite bearbeiten) in der Ribbon-Leiste oben.

Dann mit der Maus über das Webpart und rechts oben am Webpart über den kleinen schwarzen Pfeil im Dropdown-Menü auf Webpart bearbeiten.

Dann sollte rechts das Menü für das Webpart erscheinen. Unter dem Reiter AJAX-Optionen findest Du die entsprechenden Optionen.

Ohne Rang
131 Beiträge
Thilo1992 Als Antwort am 5 Apr. 2012 14:20
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Den Reiter AJAX-Optionen gibt es da nicht, da gibt es nur Darstellung, Layout und Erweitert.

Ohne Rang
30 Beiträge
Juergen Keimeleder Als Antwort am 5 Apr. 2012 14:24
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Wie heißt denn das Webpart?

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 5 Apr. 2012 14:25
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Diese Einstellungen gibt es auch nur bei einigen wenigen SharePoint-Webparts. Du hast das ja selbst programmiert.

Irgendwo läuft da bnoch etwas schief, aber ohne Code (oder zumindest mehr Erläuterungen) kann man dazu nichts sagen.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
131 Beiträge
Thilo1992 Als Antwort am 5 Apr. 2012 14:46
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Es sollen in dem Webpart alle dem aktuellen Benutzer zugewiesenen Aufgaben angezeigt werden.

Da das Standardwebpart dazu nur die Aufgaben aus der Seite in der das Webpart ist und auch nur aus Aufgabenlisten anzeigt programmiere ich es selbst.

Dazu lasse ich alle Listen in denen es die Spalte Zugewiesen an gibt suchen und dann die Einträge die dem Benutzer zugewiesen sind ausgeben und da das ziemlich lange dauert lasse ich das in einem Thread durchlaufen evt. lasse ich es dann noch abspeichern und alle 24 Stunden oder manuell aktualisieren.

 Ich würde gerne den Quellcode anzeigen, aber das wird hier ziemlich blöd formatiert und ne Spoiler Funktion gibts hier auch nicht.

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 5 Apr. 2012 16:11
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Da hätte ich einen Tip: schau Dir mal SPSiteDataQuery an. Damit kannst Du alle Elemente eines bestimmten Typs (hier Aufgaben) und gefiltert (hier Zugewiesen an) auf einen Rutsch aus der gesamten Websitesammlung abfragen. Das geht so schnell, daß Du auf Ajax verzichten kannst.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
131 Beiträge
Thilo1992 Als Antwort am 10 Apr. 2012 09:27
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ok, habs mal ausprobiert aber bekomme es nicht hin.

SPSite site = new SPSite("http://shpdev2"); 

SPWeb web = site.OpenWeb(SPContext.Current.Web.ServerRelativeUrl); 

SPsiteDataQuery query = new SPSiteDataQuery();

query.Lists = "<Lists ServerTemplate='100' /><Lists ServerTemplate='107' />";

 

query.Webs = "<Webs Scope='SiteCollection' />";

 

query.ViewFields = "<FieldRef Name='Zugewiesen an' />";

 

DataTable result = web.GetSiteData(query);

 

 

In result steht dann nichts drin.

 

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 10 Apr. 2012 10:54
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

[quote user="Thilo1992"]query.ViewFields = "<FieldRef Name='Zugewiesen an' />"; [/quote]

Du mußt bei diesen Queries immer die internen Feldnamen verwenden, nicht die Anzeigenamen. Die siehst Du z.B. wenn Du in den Listeneinstellungen auf ein Feldklickst in der URL. "Zugeweisen an" heißt intern AssignedTo.

[quote user="Thilo1992"]SPSite site = new SPSite("http://shpdev2"); 

SPWeb web = site.OpenWeb(SPContext.Current.Web.ServerRelativeUrl);[/quote]

Das funktioniert nur bei der Root-Websitesammlung, weil SPSite.OpenWeb() eine Site-relative URL erwartet, keine Server-relative. Verwende doch auch einfach SPContext.Current.Site.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
131 Beiträge
Thilo1992 Als Antwort am 10 Apr. 2012 11:23
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

OK, danke jetzt funktioniert es.

Jetzt muss ich noch die richtigen Werte nur vom aktuellen Benutzer anzeigen. Dies versuche ich so:

query.Query = "<Where><Eq><FieldRef Name='AssignedTo' /><Value Type='Text'>" + SPContext.Current.Web.CurrentUser.ID + ";#" + SPContext.Current.Web.CurrentUser.Name + </Value></Eq></Where>";

Aber dann ist result wieder leer.

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 10 Apr. 2012 11:27
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Auf den aktuellen Benutzer kannst Du so filtern:
<Value Type="Integer"><UserID/></Value>

Hier noch mehr Informationen: http://blogs.evocom.de/af/archive/2010/12/03/caml-anfragen-in-sharepoint.aspx

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
131 Beiträge
Thilo1992 Als Antwort am 10 Apr. 2012 11:30
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ok Danke jetzt funktioniert das auch.

Ohne Rang
131 Beiträge
Thilo1992 Als Antwort am 10 Apr. 2012 11:43
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hab jetzt noch eine Frage, wie kann ich das Ergebnis in eine Tabelle eintragen?

hab ein table Control erstellt, aber da wird der wird der Typ TableRow erwartet.

Ohne Rang
131 Beiträge
Thilo1992 Als Antwort am 10 Apr. 2012 12:01
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Und kann man in ein Table Control auch einen Hyperlink einfügen?

Habe noch nie mit einem Table Control gearbeitet.

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 10 Apr. 2012 12:05
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Du solltest Dich mal ein wenig mit den Grundlagen von ASP.NET vertraut machen. Die können wir hier nicht in ein paar Forenbeiträgen erklären...

Schau Dir mal das SPGridView an. Das ist ein ASP.NET-GridView, das automatisch nach SharePoint aussieht und es stellt Daten als Liste dar.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
131 Beiträge
Thilo1992 Als Antwort am 10 Apr. 2012 13:39
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ok, wird jetzt alles im Gridview angezeigt.

Brauche nur noch die Url, wie bekomme ich die? List ID und Item ID kann ich drauf zugreifen, wenn ich dann noch an den Websitenamen rankomme könnte ich die URL selbst zusammenbasteln.

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 10 Apr. 2012 14:11
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Lasse Dir noch das Feld "EncodedAbsoluteUrl" mitgeben. Das muss man nur geringfügig verbiegen, um die URL zu einem Listenelement zu bekommen.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
131 Beiträge
Thilo1992 Als Antwort am 10 Apr. 2012 14:36
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Habs mal versucht auszugeben, aber dann wird nichts mehr angezeigt, das gleiche passiert auch bei verschiedenen anderen Feldern wie ServerRelativeUrl.

Ohne Rang
131 Beiträge
Thilo1992 Als Antwort am 10 Apr. 2012 15:14
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

ich hab gesehn die webid kann man auch abfragen, kann man mit hilfe der webid den websitenamen bekommen?

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 10 Apr. 2012 16:25
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Klar kann man, wobei Di wohl eher an der URL interessiert bist.

Du müßtest für jeden Datensatz das zugehörige SPWeb instanzieren. Dabei aber prüfen, ob Du schon eines für die jeweilige ID hast und das dann wiederverwenden (um Ressourcen zu sparen - SPWeb-Objekte sind sehr ressourcenfressend).

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
131 Beiträge
Thilo1992 Als Antwort am 11 Apr. 2012 08:48
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ich lasse jetzt die richtige Seite in einer Schleife suchen:

while (web.ID.ToString() != hilf["WebId"])

{

web.Close();

web = site.OpenWeb(site.AllWebs[x].ServerRelativeUrl);

x++;

}

Aber bei der Zeile web = site.OpenWeb(site.AllWebs[x].ServerRelativeUrl); kommt die Fehlermeldung Zugriff verweigert.

Auch wenn ich SPSecurity.RunWithElevatedPrivileges benutze, hatte schonmal sowas ähnlich, da hat es mit SPSecurity.RunWithElevatedPrivileges funktioniert.

Ohne Rang
131 Beiträge
Thilo1992 Als Antwort am 11 Apr. 2012 09:52
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Habs jetzt doch hinbekommen EncodedAbsoluteUrl zu verwenden, das heißt da EncodedAbsUrl.

Hier eine Übersicht: http://sharepoint-nirvana.com/index.php?option=com_content&view=article&id=210:wsssharepoint-field-names-for-lists-a-document-libraries&catid=60:general-information&Itemid=63

Könntest du bei deinem Beitrag hier http://blogs.evocom.de/af/archive/2010/12/03/caml-anfragen-in-sharepoint.aspx evt. noch hinzufügen.

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 11 Apr. 2012 10:11
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hab' ich gerade gemacht :-)

Und sorry für den falschen Feldnamen - alle weiß ich auch nicht auswendig...

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
131 Beiträge
Thilo1992 Als Antwort am 12 Apr. 2012 09:31
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Habe grade noch einen neue Liste erstellt zum Test, die genau so aufgebaut ist wie die anderen und die internen Namen sind auch alle gleich, aber daraus wird nichts gefunden, woran könnte das liegen? Werden vlt nicht alle Unterverzeichnisse durchsuch? Der Pfad zu der Liste ist nämlich ziemlich verschachtelt. Habe auch schon Browser geschlossen und wieder geöffnet und Server neugestartet, hat aber nichts geändert.

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 12 Apr. 2012 10:05
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hast Du auch ein <Webs Scope="SiteCollection"/> ? Stimmt die Liste mit den angegebenen Templates überein?

Und noch was: wenn Du bei den ViewFields ein Feld anführst, das es in einer Liste nicht gibt, werden von dort nur Ergebnisse geliefert, wenn Du ein Nullable="True" einfügst.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
131 Beiträge
Thilo1992 Als Antwort am 12 Apr. 2012 10:12
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ja, Scope ist SiteCollection, die Liste ist wie die anderen eine Custom List also ServerTemplate 100 und die Felder sind alle vorhanden und haben auch den richtigen internen Namen.

Hier die Werte der SPSiteDataQuery:

query.Lists = "<Lists ServerTemplate='100' /><Lists ServerTemplate='107' />";
query.Webs = "<Webs Scope='SiteCollection' />";
query.Query = "<Where><And><Eq><FieldRef Name='AssignedTo' /><Value Type='Integer'><UserID/></Value></Eq><Neq><FieldRef Name='TaskStatus' /><Value Type='Text'>Abgeschlossen</Value></Neq></And></Where><OrderBy><FieldRef Name='ID' /></OrderBy>";
query.ViewFields = "<FieldRef Name='Title' /><FieldRef Name='TaskStatus' /><FieldRef Name='EncodedAbsUrl' /><FieldRef Name='FileRef' /><FieldRef Name='Created' /><FieldRef Name='Modified' />";

Ohne Rang
131 Beiträge
Thilo1992 Als Antwort am 12 Apr. 2012 10:27
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Vlt hole ich die Ergebnisse falsch, mache das so:

SPSite site = new SPSite(SPContext.Current.Site.Url);
SPWeb web = site.OpenWeb(SPContext.Current.Web.ServerRelativeUrl);
DataTable result = web.GetSiteData(query);

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 12 Apr. 2012 11:04
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Das ist grundsätzlich schon richtig. Bis auf das, was ich viel weiter oben schon angemerkt hatte, nämlich "warum erzeugst Du überhaupt neue SPSite und SPWeb-Objekte"? Und SPSite.OpenWeb(string) erwartet einen site-relativen Pfad anstatt einem server-relativen.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
131 Beiträge
Thilo1992 Als Antwort am 12 Apr. 2012 11:17
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ich erzeuge die Objekte nur, damit ich das: DataTable result = web.GetSiteData(query); machen kann.

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 12 Apr. 2012 11:22
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Das kannst Du auch mit SPContext.Current.Web machen.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
131 Beiträge
Thilo1992 Als Antwort am 12 Apr. 2012 11:27
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ah stimmt, daran habe ich nicht gedacht. Aber an meinem Problem ändert das nichts.

Habe jetzt auch mal überall Nullable='True' dazu gemacht um zu sehn ob es vlt doch daran liegt ob ein Feld nicht vorhanden ist, aber daran lags wohl nicht.

Ohne Rang
131 Beiträge
Thilo1992 Als Antwort am 12 Apr. 2012 11:52
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Vlt stimmt doch das Template nicht, wie kann man das überprüfen?

Ohne Rang
131 Beiträge
Thilo1992 Als Antwort am 12 Apr. 2012 12:52
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Habs mal überprüft, Template stimmt. Eigentlich müsste es dann ja dann funktionieren.

Ohne Rang
131 Beiträge
Thilo1992 Als Antwort am 12 Apr. 2012 13:32
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hab herausgefunden wo der Fehler ist:

<Eq><FieldRef Name='AssignedTo' /><Value Type='Integer'><UserID /></Value></Eq>

Wenn man die Zeile weglässt wird alles angezeigt. Aber ich weiß nicht warum das nicht funktioniert, in der Liste steht mein Name drin und ich bin angemeldet, bei anderen Listen geht es auch.

Kann man auch noch anders nach dem aktuellen Benutzer filtern?

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 12 Apr. 2012 14:34
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Dann lasse doch den Filter mal weg und schaue Dir an, was wirklich in dem Feld steht. Vermutlich steht Dein Name in dieser Liste eben in einem anderen Feld.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
131 Beiträge
Thilo1992 Als Antwort am 13 Apr. 2012 09:16
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Nein, es steht im richtigen Feld, ich lasse jetzt einfach nach allen Einträgen suchen und Filtere danach, so funktioniert es.

Aber das bereitstellen auf dem richtigen Server klappt nicht, habe es auf einem Testserver programmiert. Beim richtigen Server wurde die alte Version zwar gelöscht, aber das Webpart ist trotzdem noch da (bei der Webpartauswahl unter Custom) und wenn das neue bereitgestellt wird wird das alte nicht überschrieben. Vom alten ist nur das Feature weg, wie kann ich das Webpart löschen?

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 16 Apr. 2012 09:11
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Gehe in den Webpartkatalog und entferne es (Websiteaktionen - Websiteeinstellungen - Webparts).

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
131 Beiträge
Thilo1992 Als Antwort am 17 Apr. 2012 08:06
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Danke, das hat funktioniert.