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
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.
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 --------------------------- IdStatusDescriptionBdcIdentity-------------------------- 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"
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?
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 :)