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.




SharePoint Listenelement auswählen

Unbeantwortet Dieser Beitrag hat 29 Antworten

Ohne Rang
71 Beiträge
geisbock erstellt 7 Okt. 2009 12:16
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hi,

ich versuche gerade einen SharePoint Liste mit C# zu bearbeiten. Ich will über einen Web Service eine Variable in ein Listenelement in einer SharePoint Liste schreiben (Betsehendes Element ändern).

Code:


"<Method ID='1' Cmd='Update'>
" +
"<Field Name='ID'>" + elementID + "</Field>" +
"<Field Name='Title'>" + neuerTitel + "</Field>" +
"
</Method>";
wsLists.UpdateListItems("Beiträge", batch);




Wenn ich jetzt aber die elementID auf z.B 4 setzte schreibt er die Variable in die vierte Zeile der ersten Spalte. Jetzt habe ich aber 2 Spalten und ich will das die Variable in die zweite Spalte geschrieben wird. Wie mache ich das? Gibt es einen Befehl mit z.B Column oder so?

Danke schon mal!

geisbock

Alle Antworten

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 7 Okt. 2009 12:27
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

???

Weder die Zeilen noch die Spalten haben feste Positionen. Die Reihenfolge läßt sich beliebig ändern und ist damit vökkig belanglos.

Mit dieser Zeile gibst Du an, welches Element geändert werden soll (nämlich das mit der angegebenen ID):
"<Field Name='ID'>" + elementID + "</Field>"

Mit dieser Zeile gibst Du an, welches Feld geändert werden soll:
"<Field Name='Title'>" + neuerTitel + "</Field>"
Heir ist das Feld Title, aber Du kannst auch jedes andere angeben und natürlich auch mehrere.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
71 Beiträge
geisbock Als Antwort am 8 Okt. 2009 08:25
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hi,

kann es sein, das ich dann einen anderen Names als den DisplayNamen des Feldes brauche? Wenn ja welchen und wie ermittle ich diesen?

 

Gruß geisbock

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 8 Okt. 2009 09:20
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ja, in der CAML-Query brauchst Du immer den InternalName. Wenn Du in den Listeneinstellungen auf eine Spalte klickst (so daß Du sie ändern könntest), dann steht der InternalName der Spalte in der URL ganz hinten.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
71 Beiträge
geisbock Als Antwort am 8 Okt. 2009 09:59
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

WUNDERBAR!!!

Danke, das funktioniert schon mal.

Kannst du mir zufällig auch sagen, wie man den Inhalt eines Feldes ausliest?

 

 

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 8 Okt. 2009 10:34
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

[quote user="geisbock"]Kannst du mir zufällig auch sagen, wie man den Inhalt eines Feldes ausliest?[/quote]

Klar wenn Du mir sagst, wie Du das machen willst (Objektmodell, Webservice, ...).

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
71 Beiträge
geisbock Als Antwort am 8 Okt. 2009 11:57
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Webservice

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 8 Okt. 2009 12:49
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Lists.asmx - Methode GetListItems
http://msdn.microsoft.com/en-us/library/lists.lists.getlistitems.aspx

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
71 Beiträge
geisbock Als Antwort am 8 Okt. 2009 15:19
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ja da war ich auch schon , aber wo schreibt er denn den Text rein den ich auslese wenn ich

<ViewFields>
   <FieldRef Name="ID" />
   <FieldRef Name="Title" />
</ViewFields>

benutze?

Bzw. er gibt mir                      System.Xml.XmlElement             aus!? Jedoch nicht den Inhalt.

Gruß geisbock

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 8 Okt. 2009 16:09
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Das steht doch auf der verlinkten Seite!? Der Webservice gibt XML zurück, das Du z.B. mit den Klassen und Methoden aus System.Xml verarbeiten kannst.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
71 Beiträge
geisbock Als Antwort am 8 Okt. 2009 17:28
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

OK... dann muss ich das ma ausprobieren.

 

Danke

Ohne Rang
71 Beiträge
geisbock Als Antwort am 9 Okt. 2009 08:43
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Morgen

also habe das mal getestet.

XmlNode

 

re = lists.GetListItems(listenName,null,query,null,null,null,null);

String

 

test = re.                         <-Was muss dahin damit ich den Text sehe, der in einem Feld steht? Oder bin ich ganz falsch?;

Gruß geisbock

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 9 Okt. 2009 09:13
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Du bekommst ein XmlNode-Objekt zurück. Schau Dir einfach mal die Eigenschaften und Methoden dieses Objektes an. Z.B. mit OuterXml bekommst Du den gesammten Inhalt als String. Mit SelectNodes oder SelectSintgleNode kommst Du an einzelne Elemente heran.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
71 Beiträge
geisbock Als Antwort am 9 Okt. 2009 14:12
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Der gibt mir halt die komplette Liste in XmlCode aus, aber nicht was in einem bestimmten Element drinne steht.

Wenn da z.B. "Test" drin steht gibt der mir "System.Xml.XmlElement" oder halt die Liste in Xml aus.

Finde auch nicht die passende Methode

Gruß geisbock

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 9 Okt. 2009 14:23
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Du solltest Dich dringend mehr mit XML im Allgemeinen und dem :NET-Namespace System.Xml im Besonderen beschäftigen. Wir können Dir das nicht alles hier im Forum auseinanderklamüsern.

Wie schon beschrieben: mit SelectSingleNode kannst Du auf ein einzelnes Element aus dem gesamten XML-Fragment zugreifen. Mit der InnerText-Eigenschaft kommst Du dann an den Textinhalt heran.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
71 Beiträge
geisbock Als Antwort am 12 Okt. 2009 10:05
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hi,

sorry aber ich hab nochmal eine Frage zu dem XmlObjekt.

 

 

 

 

ndViewFields.InnerText =

 

"<ViewFields>" +

 

 

"<FieldRef Name='ID'>" +elementID1+" </FieldRef>" +

 

 

"<FieldRef Name='Test' </FieldRef>" +

 

 

"</ViewFields>";

 

 

 

XmlNode re = lists.GetListItems(listenName,null,ndQuery,ndViewFields,null,null,null);

 

 

 

XmlNode test = ndViewFields.SelectSingleNode("ViewFields");

 

 

String test2 = test.OuterXml;

 

Also ich blicke da noch nicht so richtig durch, bin auch absoluter Neuling.

Ich hole mir ja mit SelectSingleNodes das Element von ViewFields. Ich habe das Element "Test" genannt.

In test2 speichere ich dann über OuterXml den String(Inhalt) des Elements.

Das Problem ist es funktioniert nicht.

 

Kannst du mir nochmal helfen?

 

Gruß geisbock

 

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

in ndViewFields wirst Du nichts (neues) finden. Das übergibst Du ja der GetListItems-Methode, d.h. Du hast es vorher selbst zusammengesetzt.

Schau Dir mal re an. Darin steht das Ergebnis des Aufrufs...

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
71 Beiträge
geisbock Als Antwort am 12 Okt. 2009 11:06
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ok  anstatt "ViewFields.SelectSingleNode" schreibe ich dann "re.SelectSingleNode"  und in die klammern kommt dann ja ein XPath-Befehl nur funktioniert da keiner

Ohne Rang
71 Beiträge
geisbock Als Antwort am 16 Okt. 2009 09:52
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hi,

danke nochmal für deine Antwort es funktioniert jetzt alles soweit mit dem auslesen der Elemente.

Habe aber trotzdem noch eine Frage:

Wenn ich etwas in ein Element schreiben möchte, dann muss ich ja den FeldName angeben bzw. Spalten namen(InternalName) der steht ja wenn ich mir die Spalte im Web browser angucke in der URL ( Field =...). Jetzt habe ich aber eine Spalte wo der Internal Name irgendwelche Sonderzeichen beinhaltet, weil der Spalten name den man sieht ein Leerzeichen oder Bindestrich enthält. In diese Felder kann ich im moment auch nicht schreiben.

Weißt du vielleicht woran das liegen könnte? Ich denke dass das die Sonderzeichen in dem InternalName sind.

Gruß geisbock

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 16 Okt. 2009 10:00
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Nimm einfach auch den Namen aus der URL. Das ist immer der InternalName und der enthält eben keine Sonderzeichen mehr (nur Buchstaben, Zahlen und Unterstrich).

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
71 Beiträge
geisbock Als Antwort am 16 Okt. 2009 11:08
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Doch das ist ja das Problem. Wenn ich z.B eine Spalte habe und die "Test Spalte" nenne, dann steht in der URL als InternalName "Test%5Fx0020%5F%5Fx0020%5FSpalte" !?

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 16 Okt. 2009 11:28
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Stimmt, da hast Du recht. Das ist auch der Grund, warum ich so etwas immer vermeide, also Spalte mit Namen ohne Sonderzeichen anlegen und dann umbenennen.

In Deinem Fall mußt Du einfach %5F durch einen Unterstrich ersetzen. Ergibt also Test_x0020_Spalte

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
71 Beiträge
geisbock Als Antwort am 16 Okt. 2009 13:07
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hi,

vielen Dank!!!

Funktioniert jetzt alles.

 

Bis zu meinem nächsten Problem :-)

gruß geisbock

Ohne Rang
71 Beiträge
geisbock Als Antwort am 19 Okt. 2009 10:27
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hi,

habe grad nochmal ne Frage^^

Und zwar ist in einer SharePoint Liste ein Feld wo man den Benutzernamen eingeben kann und dann kann man auf überprüfen gehen und das Feld sucht sich dann den richtigen Namen des users. Man gibt z.B. meierh ein und dann wird ein adressbuch durchsucht. Raus kommt dann Meier, Harry. Wenn ich aber jetzt über ein Programm was ich geschrieben habe in das Feld meierh reinschreibe macht er nichts weil ich dem feld einen string übergebe, es jedoch einen datensatz vom typ personen und gruppen erwartet bzw. ich den button "person überprüfen" (Das er im adressbuch nach dem namen sucht) nicht betätigen kann/will.

Weißt du wie ich das machen könnte?

 

gruß geisbock

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 19 Okt. 2009 11:03
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Wie schreibst Du denn in das Feld?

Per javaScript in der Oberfläche? Anzeigenamen
Per Webservice? Anmeldenamen
Per Objektmodell? SPFieldUserValue

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
71 Beiträge
geisbock Als Antwort am 19 Okt. 2009 11:54
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hi,

ich schreibe per Webservice und zwar dann den Anmeldenamen von Windows.

Ich habe noch ein ähnliches Problem und zwar habe ich ein Feld wo nur Datumswerte und Uhrzeiten reingeschrieben werden können.

Jetzt versuche ich einen Wert vom Typ "System.DateTime"  in das Feld zu schreiben, leider ohne Erfolg. Gibt es noch einen anderen Typ in c# den der SharePoint erkennt oder was kann ich tun?

 

Gruß geisbock

Ohne Rang
71 Beiträge
geisbock Als Antwort am 21 Okt. 2009 12:11
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hi

ich habe noch eine Frage und zwar habe ich jetzt eine Spalte mit dem namen "Größe" jetzt ist der InternalName

Monitorgr%5Fx00f6%5F%5Fx00df%5Fe Wenn ich jetzt wie du gesagt hast die %5F rauslösche bleibt ja noch Monitorgrx00f6x00de übrig. Das Problem ist jetzt es klappt weder mit  %5F noch mit. Kannst du mir vllt. auch da weiter helfen?

gruß geisbock

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 21 Okt. 2009 12:29
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ich habe nicht gesagt, daß Du die %5F löschen sollst. Ersetze sie durch einen Unterstrich!

Übrigens: was Du hier siehst, sind die hexadezimalen Zeichencodes. Wenn Du z.B. mit der Windows-eigenen Zeichentabelle (Programme/Zubehör/Systemprogramme) nachschaust, dann findest Du für das Zeichen 5F eben den Unterstrich.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
71 Beiträge
geisbock Als Antwort am 21 Okt. 2009 14:15
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hi,

stmmt hast Recht ich hab mich da ein bisschen geirrt. Das mit dem Hexadezimal ist mir schon bewusst.

 

Kannst du mir mit den anderen Sachen helfen?

 

gruß geisbock

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 21 Okt. 2009 14:18
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

[quote user="geisbock"]Kannst du mir mit den anderen Sachen helfen?[/quote]

Das hängt ganz von den "anderen Sachen" ab ;-)

Ich würde aber vorschlagen, daß Du für jedes Problem einen eigenen Thread aufmachst.

Viele Grüße
Andi
af @ evocom de
Blog