我在Sharepoint中列出了两个新的自定义列“第一行审批者”和“第二行审批者”。 此列的类型为“人员或组”,“允许多个选择”设置为“是”。
如何获取自定义列的值?
我尝试这种方法:
string Name = item["Name"] as string;
string ModifiedBy = item["Modified By"] as string;
string FirstLineApprovers = item["First line approvers"] as string;
string SecondLineApprovers = item["Second line approvers"] as string;
并且对于前两列,我获得了正确的值:
"New Text Document.txt"
"1;#SHAREPOINT\\Administrator"
但是对于我的新专栏,我获得了
null
null
但这列有值!!!
“第一线批准者”
SHAREPOINT\user1
SHAREPOINT\user2
SHAREPOINT\user3
和“第二行审批人”
SHAREPOINT\user4
有什么问题以及如何获取此列的值?
答案 0 :(得分:3)
我解决了我的问题。
正确的是投射到 SPFieldUserValueCollection 而不是字符串
SPFieldUserValueCollection FirstLineApprovers = (SPFieldUserValueCollection ) item["First line approvers"];
foreach (SPFieldUserValue userValue in FirstLineApprovers)
{
//...
}
答案 1 :(得分:0)
我会看看你是如何访问这些列的。由于返回的值为null,因此它似乎无法根据您提供的名称引用列。创建自定义列时,请指定名称和显示名称。尝试将“第一行批准者”更改为列的名称(假设您现在使用的是显示名称)
您能提供有关列的更多信息吗?我假设数据类型是SPListItem,但了解您添加的自定义列的属性会很有帮助。
答案 2 :(得分:0)
如果您的自定义列是使用浏览器创建的,请尝试:
string FirstLineApprovers = item["First_x0020_line_x0020_approvers"] as string;
string SecondLineApprovers = item["Second_x0020_line_x0020_approver"] as string;
答案 3 :(得分:0)
获取SharePoint Manager 2007或2010(http://spm.codeplex.com)以检查字段的InternalName属性,因为这是item []使用的属性。
虽然小心 - 虽然你可以用它来改变属性,但你不应该这样做!