SharePointCommunity
Die deutschsprachige Community für SharePoint, Office 365 und mit Azure

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

bewertet von 0 Usern
Nicht beantwortet Dieser Beitrag hat 0 Geprüfte Antworten | 4 Antworten | 1 Follower

Top-25-Beitragsschreiber
365 Beiträge
Christian Merkel erstellt in 13 Apr 2018 16:38

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');

:(

SharePoint Enthusiast

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

Alle Antworten

Top-10-Beitragsschreiber
18.753 Beiträge

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
Top-25-Beitragsschreiber
365 Beiträge

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

Top-10-Beitragsschreiber
18.753 Beiträge

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
Top-25-Beitragsschreiber
365 Beiträge

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

Seite 1 von 1 (5 Elemente) | RSS