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.




Webservice lists.asmx und fehlende Spalten

Geprüfte Antwort Dieser Beitrag hat 4 Antworten

Ohne Rang
126 Beiträge
JasGo erstellt 14 Apr. 2010 15:12
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo zusammen,

aus der Serie "Sharepoint macht mich wahnsinnig" heute die Folge "wo zum Teufel sind die Spalten der Liste geblieben?"

Mein aktueller Data view soll auf Listen aus anderen Collections zugreifen. Hier hilft ja der Webservice "lists.asmx", weil's mit "andere Bibliothek verbinden" ja bekannterweise nicht geht (freundlicherweise mit einer so nichtssagenden Fehlermeldung, daß man nur durch Zufall herausfindet, was eigentlich das Problem ist).

Per getListItems ziehe ich die Daten aus einer benannten Liste heran und lasse sie ausgeben. Soweit, so gut. Es fehlt aber z.B. das Feld "Created By", das ich ausgeben möchte. Es gibt ja offenbar den Bug/das Feature, daß optionale oder leere Felder nicht mitgeliefert werden in diesem Webservice, aber hier handelt es sich um ein automatisch befülltes Feld, also weder optional noch leer. Das gleichermaßen vorhandene "Created" kommt problemlos mit.

Ich habe versucht, die Spalte in den Standardview mit aufzunehmen (wobei "Created" auch nicht in diesem View liegt), kein Resultat.

Mein Verdacht ist, daß es etwas mit den übergebenen Parametern zu tun hat - ich habe nur den Listennamen übergeben - finde aber nirgends eine Doku, die mir die Syntax der in SPD zu übergebenden Parameter erläutert, alles dazu geht gleich in Richtung .NET, was mir hier nicht hilft.

Die Datenquelle auf den Webservice sieht so aus (bißl formatiert):

<udc:DataSource xmlns:udc="http://schemas.microsoft.com/data/udc" MajorVersion="2" MinorVersion="0">
<udc:Name>Webservice auf MyList</udc:Name>
<udc:ConnectionInfo>
<DataSourceControl>
 <![CDATA[<%@ Register tagprefix="SharePoint" namespace="Microsoft.SharePoint.WebControls" assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
    <SharePoint:SoapDataSource runat="server" id="SoapDataSource" AuthType="None" WsdlPath="http://myserver/mylist/_vti_bin/lists.asmx?WSDL" SelectUrl="http://
myserver/mylist/_vti_bin/lists.asmx" SelectAction="http://schemas.microsoft.com/sharepoint/soap/GetListItems" SelectPort="ListsSoap" SelectServiceName="Lists">
            <SelectCommand>
                <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
                    <soap:Body>
                    <GetListItems xmlns="http://schemas.microsoft.com/sharepoint/soap/">
                        <listName>MyListName</listName>
                    </GetListItems>
                    </soap:Body>
                </soap:Envelope>
        </SelectCommand>
    </SharePoint:SoapDataSource>
 ]]>
</DataSourceControl>
</udc:ConnectionInfo>

<udc:Type MajorVersion="1" MinorVersion="0" Type="Soap"/>

Ich vermute, daß man hier noch etwas machen kann, um bestimmte Spalten mit ranzuholen. Aber wie?

Danke für jeden Tipp!

Grüße,

jsago

 

Alle Antworten

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 14 Apr. 2010 15:22
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ich weiß gerade nicht mehr auswendig, wie es beim Webservice funktioniert, aber Du mußt dazu das CAML (=XML) bei GetListItems um ein ViewFields-Element erweitern. Dort gibst Du alle Felder an, die Du haben möchtest als <FieldRef Name='ID' /><FieldRef Name='Title /> usw.

Ich hoffe, das liefert Dir zumindest ausreichend Stichworte für's Nachforschen.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
126 Beiträge
JasGo Als Antwort am 14 Apr. 2010 15:53
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ich hätte gedacht, ich setze es selbst in dem XML oben ein, aber per "Klickibunti" im Dialogfeld ging es dann doch simpler, und was hinten rauskommt, sieht auch hinreichend eklig aus, daß man lieber die Finger davon läßt:

Beim Konfigurieren des Webservices per SPD also hintereinanderweg die Feldnamen eingeben: <FieldRef Name='ID' /><FieldRef Name='Title' /> usw. (ich habe nur wichtigsten genommen, der Rest kommt komischerweise von alleine mit ...)

In der XML von oben steht dann sowas:

<viewFields>_x0020__x003c_FieldRef_x0020_Name_x003d__x0022_ID_x0022__x0020__x002f__x003e__x0020__x003c_(und endlos so weiter bei vielen Feldern)</viewFields>

Und dann klappte es auch mit den fehlenden Feldern.

Danke für den Hinweis, Andi, manchmal sieht man den Wald vor lauter Bäumen nicht.

jasgo

 

Ohne Rang
6 Beiträge
ACW Als Antwort am 4 Jan. 2016 18:23
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo,

ich stand auch vor dem Problem, dass mein Webserviceaufruf aus VBA nicht für alle Ergebniszeilem die gleichen Spaltenreihenfolge lieferte.

Dank diesem Thread habe habe ich nun verstanden, warum das so ist - Danke

Jetzt wollte ich den Aufruf manuell um die benötigten Spalten ergänzen -> nur Fehlermeldungen als Responese auf den Request  :-((

Daher zwei Fragen:

  • Wo bitte genau kann ich mir den Auftruf zusammenbauen lassen  ?
  • Hat jemand ein Beispiel eines Soap Request mit Feldliste welches funktioniert ?

Dank und Gruß

Andreas

Normal 0 21 false false false DE X-NONE X-NONE MicrosoftInternetExplorer4

Ohne Rang
6 Beiträge
ACW Als Antwort am 4 Jan. 2016 18:59
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ok - selbst "gefunden"

Das muss so aussehen:

Normal 0 21 false false false DE X-NONE X-NONE MicrosoftInternetExplorer4

...
sEnv = sEnv & "<query></query>"

sEnv = sEnv & "<viewFields>"

sEnv = sEnv & "    <ViewFields xmlns="""">"

sEnv = sEnv & "      <FieldRef Name=""Status"" />"

sEnv = sEnv & "      <FieldRef Name=""BS"" />"

sEnv = sEnv & "    </ViewFields>"

sEnv = sEnv & "  </viewFields>"

sEnv = sEnv & "<rowLimit></rowLimit>"
....

Warum auch immer der ViewFields Node geschachtelt sein muss :-(

Andreas