在处理列表的时候,有时会遇到"用于更新此列表项的数据无效,您试图更新的域可能只读"的错误.
出现这个原因是列表项中有一部分是引用项,这个时候该项是不可以直接赋值.存储或修改的时候,应用引用项的ID来进行修改。
例如:
string username = SPContext.Current.Web.CurrentUser.ID.ToString();
SPSecurity.RunWithElevatedPrivileges(delegate ()
{
using (SPSite site = new SPSite("url"))
{
using (SPWeb web = site.OpenWeb())
{
SPList list = web.Lists["测试讨论板"];
web.AllowUnsafeUpdates = true;
SPListItem item = list.GetItemById(id);//根据话题的id,获取到话题的Item
SPListItem r = Microsoft.SharePoint.Utilities.SPUtility.CreateNewDiscussionReply(item);//创建新的讨论板回复Item
r[SPBuiltInFieldId.Body] = content;//Body是回复信息
r[SPBuiltInFieldId.Author] = username;//这里的username要用Web.CurrentUser.ID获取
r.SystemUpdate();
}
}
});