2012-07-12 13 views
5

İstemci Nesne Modeli'ni kullanarak bir Sharepoint tartışma panosundaki "ModifiedBy" alanını güncellemeye çalışıyorum. "Editör" ve "Yazar" alanlarını değiştirerek, liste görünümünde görünen "ModifiedBy" yi değiştirebilirim. Bununla birlikte, bir tartışma gönderisini tıkladıktan sonra, orada görünen "ModifiedBy" alanı (yukarıdaki resimdeki resim) değişiklikleri yansıtmaz. Denemeden sonra, bunu düzeltmek için değiştirmem gereken alanın "MyEditor" olarak adlandırıldığını keşfettim. Maalesef bu alan salt okunur.Sharepoint İstemcisi Nesne Model ayarı ModifiedBy alanı

Aşağıdaki kodda, alanın salt okunur ayarlarını false olarak değiştirmeyi deniyorum. Visual Studio'nun hata ayıklayıcısındaki MyEditor alanına ilk bloğun altındaki ExecuteQuery() satırından baktığımda, ReadOnlyField değerinin aslında false olarak ayarlandığını gösterir.

 sharepointContext.Load(discussionList); 
     sharepointContext.ExecuteQuery(); 
     var fields = discussionList.Fields; 
     sharepointContext.Load(fields); 
     sharepointContext.ExecuteQuery(); 
     var field = fields.GetByInternalNameOrTitle("MyEditor"); 
     field.ReadOnlyField = false; 
     field.Update(); 
     sharepointContext.Load(field); 
     sharepointContext.ExecuteQuery(); 

Yukarıdaki kod hiçbir sorun olmadan yürütülür.

 Invalid data has been used to update the list item. 
     The field you are trying to update may be read only. 

emin olmak için:

yasasında ikinci bloğun altındaki ExecuteQuery() ulaşır
 //...Code to initialize discussionItem... 
     discussionItem["MyEditor"] = 0; 
     discussionItem["Editor"] = 0; 
     discussionItem["Author"] = 0; 
     discussionItem["Body"] = "Testing"; 
     discussionItem["Title"] = "Hello Worlds"; 
     discussionItem.Update(); 
     sharepointContext.Load(discussionItem); 
     sharepointContext.ExecuteQuery(); 

, aşağıdaki iletiyi içeren bir ServerException atar: Sorun bu sonraki blokta ile geliyor MyEditor alanın istisna edilmesine neden olan alan olduğu, ben ayarladığım çizgiyi yorumladım ve kodu tekrar çalıştırdım. Her şey iyi çalıştı. Neyin yanlış olduğunu anlamıyorum, birisi bana yardım edebilir mi?

+0

Neden (eğer normal amaçlar için neden gerekir ve) bunu mümkün olmalıdır sizce? Bu tür alanların düzenlenebilir olmasını beklemeyeceğim ... Bunu yapmak için yönetici olmayan bir hesap kullanıyorsanız ve bu alanları değiştirmeyi başarırsanız, bana bir hata gibi geliyor. –

+0

Mümkün olması gerektiğine inanıyorum çünkü bir alanın ReadOnly özelliğini false olarak ayarladığımda, ona yazabilmem uygun olurdu. Değilse, ReadOnly alanı hangi amaca hizmet eder? Farklı bir veritabanından bir tartışma panosu için verileri Sharepoint'e taşıyorum ve ModifiedBy alanının aslen yayınlayan kişiyi yansıtmasını istiyorum (şu an itibariyle, bunun yerine ismimi gösterir). Hesabımda tam yönetim hakları var. –

cevap

1
ModifiedBy ve CreadtedBy böyle sadece Yazar ve Editör alanlarını değiştirmek gerekir Yazar ve Editör otomatik olarak hesaplanır

:

birisi adına göre kullanıcıyı bulmak için ihtiyacı durumunda
 using (var clientContext = new ClientContext(@"http://server")) 
     { 
      var web = clientContext.Web; 
      var lst = web.Lists.GetByTitle("Discus"); 

      var item = lst.GetItemById(2); 
      item["Author"] = 3; 
      item["Editor"] = 2; 
      item.Update(); 
      clientContext.ExecuteQuery();       

      Console.WriteLine("done"); 
     } 
+0

Bunun farkındayım. Yalnızca bunları eklediğinizde çalışır ve bir GetItemById ile geri alır. Bu kesinlikle bir anlam ifade etmiyor (sizin hatanız değil). MyEditor alanını neden değiştiremediğimi ve onu eklediğimde neden ilk kez çalıştığımı bilmek isterim. –

3

, bu böyle gider:

private static FieldUserValue GetUser(ClientContext clientContext, string userName) 
    { 
     var userValue = new FieldUserValue(); 
     var newUser = clientContext.Web.EnsureUser(userName); 
     clientContext.Load(newUser); 
     clientContext.ExecuteQuery(); 
     userValue.LookupId = newUser.Id; 
     return userValue; 
    } 

döndürülen değer öğesi üzerinden ayarlanabilir [ "Yazar"]