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.




GetListItems von External List - "Id" nicht auslesebar / immer 0

Unbeantwortet Dieser Beitrag hat 4 Antworten

Ohne Rang
367 Beiträge
Christian Merkel erstellt 13 Apr. 2018 16:38
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

HI,

 

ich habe eine externe Liste angebunden, welche die Felder "Id" und "Status" bereitstellt.

Der Abruf der Daten funktioniert wunderbar (sofern man die notwendigen Felder in den ViewFields und dem Include hinterlegt hat).

Leider bekomme ich beim abruf von "oListItem.get_id()" immer "0" gemeldet. und via "oListItem.get_item('Id')" erhalte ich immer "Die Eigenschaft oder das Feld wurde nicht initialisiert. Es ist keine Anforderung erfolgt, oder die Anforderung wurde nicht ausgeführt. Ggf. muss eine ausdrückliche Anforderung erfolgen."

Der interne Feld-Name von "Id" ist auch Id. sowohl in SQL als auch im ExternalContentType.

Ich habe die Vermutung das es mit dem Standard-ID Feld in irgend einer Form kolidiert :(

Status und BdcIdentity kann ich problemlos abrufen...

camlQuery.set_viewXml('<View>' +
            "<ViewFields>" +
                "<FieldRef Name='Id'/>" +
                "<FieldRef Name='StatusDescription'/>" +
            "</ViewFields>" +   
            '<RowLimit>100</RowLimit>'+
        '</View>');

this.Items = oList.getItems(camlQuery);

clientContext.load(Items, 'Include(Id,BdcIdentity,StatusDescription)');

So der Aufruf. Und so die Feld-Abfrage:

listItemInfo += '\nId: ' + oListItem.get_id() +
            '\nTitle: ' + oListItem.get_item('StatusDescription') +
            '\nBody: ' ; //+ oListItem.get_item('Id');

:(

Alle Antworten

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 16 Apr. 2018 08:02
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

ID ist immer für das gleichnamige Feld von SharePoint reserviert, das jede Liste und Bibliothek besitzt. Allerdings wird es bei externen Listen nicht benutzt. Das von Dir gesuchte Id-Feld muß auf jeden Fall einen anderen Namen haben, wie id1 oder id_1 oder so. Gehe am einfachsten mal alle Spalten per Schleife durch und schaue sie dir an.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
367 Beiträge
Christian Merkel Als Antwort am 16 Apr. 2018 09:57
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Leider gibt mir die Abfrage der Felder "Title, InternalName, StaticName" folgende aussage zurück:

 

SP.FieldCollection from list.get_fields()
Title - Internal Name - Static Name
---------------------------
BDC-Identität - BdcIdentity - BdcIdentity;
 Status_Id - Id - Id;
 StatusDescription - StatusDescription - StatusDescription;
 --------------------------
 Number of Fields: 3

SP.ViewFieldCollection from view.get_viewFields()
Internal Name
---------------------------
Id
StatusDescription
BdcIdentity
--------------------------
 Number of Fields: 3

Abfrage via diesem Script hier:

https://blog.josequinto.com/2015/12/08/retrieve-static-and-internal-field-names-of-a-sharepoint-list-using-javascript-in-office-365/#Code

 

Da scheint "Id" wirklich "Id" zu lauten...

Ggf. gibt es Komplikationen wegen dem kleinen "D"

SharePoint Enthusiast

Ich helfe gern, wenn es mein Zeit zu lässt :)
Gern auch per direkter Anfrage auf XING

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

Kannst Du dasselbe auch mal schnell z.B. per PowerShell testen? Entweder clientseitig oder (weil es schneller geht) vielleicht sogar serverseitig?

Hast Du Zugriff auf die Definition der externen Daten? Und kannst Du die eventuell beeinflussen und der Spalte einen völlig unverfänglichen Namen wie ExternalID oder so verpassen?

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
367 Beiträge
Christian Merkel Als Antwort am 19 Apr. 2018 13:58
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Also folgendes getestet:

Id Spalte im SQL Umbenannt in StatusId => im Mapping beim BCS Content Type muss man dann aber immer auf das Feld "Id" mappen. Das erzwingt er... Eine Spalte im SQL muss als Id Feld herhalten...

Wenn ich dann abfrage und "StatusId" angebe als internal name, kennt er die Spalte garnicht. Sie heißt dann wirklich Id.

Somit werden wir jetzt einfach eine weitere Id Spalte mitführen, die einfach für die Bedürfnisse des BCS dient eine Id Spalte zu haben...

Das Parsen der BDCIdentity war nicht vielversprechend, da das sehr komisch aussieht mit dem "__bg40001300" usw...

Bei einem anderen Inhaltstypen, wo die Id-Spalte eine GUID ist ging es relativ entspannt. Da konnte ich von der BDCIdentity das rausparsen, weil die letzten 36 Stellen der Identity die Guid waren :)

SharePoint Enthusiast

Ich helfe gern, wenn es mein Zeit zu lässt :)
Gern auch per direkter Anfrage auf XING