I'm trying to create items in a list and set the ID field programmatically (for use in a lookupfield in another list). This works serverside by setting the property ReadOnlyField of the field ID to false while inserting.
Code:
private static void InsertItemWithID(int itemID) {
using (SPSite site = new SPSite(siteUrl)) {
using (SPWeb web = site.OpenWeb()) {
SPList list = web.Lists.TryGetList(listName);
list.Fields[SPBuiltInFieldId.ID].ReadOnlyField = false;
list.Update();
SPListItem item = list.AddItem();
item["Title"] = "This item Id's is not auto-generated by SharePoint, it explicitly specified";
item[SPBuiltInFieldId.ID] = itemID;
item.Update();
list.Fields[SPBuiltInFieldId.ID].ReadOnlyField = true;
list.Update();
}
}
}
Now i'm trying to get this to work with the client object model - without success. Instead i'm getting the error message "This field cannot be updated.".
Here's my code:
private static void InsertItemWithSpecificIDCO(int itemID) {
ClientContext context = new ClientContext(siteUrl);
List list = context.Web.Lists.GetByTitle(listName);
var fields = list.Fields;
context.Load(fields);
context.ExecuteQuery();
var field = fields.GetByInternalNameOrTitle("ID");
field.ReadOnlyField = false;
field.Update();
context.Load(field);
context.ExecuteQuery();
ListItemCreationInformation itemCreateInfo = new ListItemCreationInformation();
ListItem newItem = list.AddItem(itemCreateInfo);
newItem["ID"] = itemID;
newItem["Title"] = "This item Id's is not auto-generated by SharePoint, it explicitly specified (Client Object Model)";
newItem.Update();
context.ExecuteQuery();
}
`
Does anybody has a clue whats going wrong?
Aucun commentaire:
Enregistrer un commentaire