博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于在Share point 2010 中保存SPFieldLookupValue类型到一个List中的问题
阅读量:4544 次
发布时间:2019-06-08

本文共 1209 字,大约阅读时间需要 4 分钟。

在share point 中,有时字段的类型是lookup的,那么将会从另外的一个list中进行相应的连接,这是如果保存string等类型,将会报一个错,

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

这个错误看起来莫名其妙,但实际上是有一定道理的,因为这个字段可以认为是表外键一样的存在。

那应该怎么办呢?这里我写了一个方法:

public static SPFieldLookupValue GetLookupFieldFromValue(string lookupValue, string lookupSourceColumn, SPList lookupSourceList)        {            SPFieldLookupValue value = null;            SPQuery query = new SPQuery();            query.Query = "
" + lookupValue + "
"; SPListItemCollection listItems = lookupSourceList.GetItems(query); if (listItems.Count > 0) value = new SPFieldLookupValue(listItems[0].ID, lookupValue); return value; }

 

  这个方法中,lookupValue是你获得的需要查找的字符串,lookupSourceColumn是拥有内容主体的list(或者就认为是外键表),lookupSourceList是list。

这时在进行保存:

item["demo"]=GetLookupFieldFromValue("abc","Title",web.List["Demo"]);//item["user"]=spuser;item.update();

 

  正常保存就可以了。当然如果权限不够的话需要加上:

SPSecurity.RunWithElevatedPrivileges(delegate()            {//......});

 

  相对于spuser类型的字段,直接拿到spuser保存就可以了。

转载于:https://www.cnblogs.com/tdskee/p/3305751.html

你可能感兴趣的文章
C++面试宝典2011版
查看>>
Android学习笔记——ProgressBar
查看>>
Flume的监控参数
查看>>
第三天记录
查看>>
Centos下关于ssh、scp与rsync设置与应用
查看>>
排列组合+组合数取模 HDU 5894
查看>>
WCF(一) 创建第一个WCF
查看>>
hdu 6206 apple 点在内接圆外
查看>>
Jquery实现图片自动轮播
查看>>
第一篇:groovy对DSL的语法支持
查看>>
idea Cannot open URL.Please check this URL is correct
查看>>
(转载)C#使用MemoryStream类读写内存
查看>>
自我表水
查看>>
sqlserver中的数据转换与子查询
查看>>
【CF316G3】Good Substrings 后缀自动机
查看>>
【BZOJ2938】[Poi2000]病毒 AC自动机+DFS
查看>>
【BZOJ4750】密码安全 单调栈
查看>>
Java之atomic包的原理及分析
查看>>
Chrome自定义滚动条
查看>>
poj3311(状态压缩dp)
查看>>