Sharepoint:如何获取自定义列的值

Sharepoint:如何获取自定义列的值,sharepoint,sharepoint-2007,Sharepoint,Sharepoint 2007,我在Sharepoint中有两个新的自定义列“一线审批人”和“二线审批人”。 此列的类型为“个人或组”,且“允许多选”设置为“是” 如何获取自定义列的值 我尝试这种方法: string Name = item["Name"] as string; string ModifiedBy = item["Modified By"] as string; string FirstLineApprovers = item["First line approvers"] as string; string

我在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
但是这个栏目有价值

“一线审批人”

和“第二线审批人”


有什么问题,以及如何获取这些列的值?

我将了解您是如何访问这些列的。由于返回值为null,因此它似乎无法根据您提供的名称引用列。创建自定义列时,需要指定名称和显示名称。尝试将“第一行审批人”更改为列的任何名称(假设您现在使用的是显示名称)


你能提供更多关于这些栏目的信息吗?我假设数据类型为SPListItem,但了解您添加的自定义列的属性会很有帮助。

如果您的自定义列是使用浏览器创建的,请尝试:

string FirstLineApprovers = item["First_x0020_line_x0020_approvers"] as string; 
string SecondLineApprovers = item["Second_x0020_line_x0020_approver"] as string; 
我解决了我的问题

正确的方法是强制转换为SPFieldUserValueCollection,而不是string

SPFieldUserValueCollection FirstLineApprovers = (SPFieldUserValueCollection ) item["First line approvers"];

foreach (SPFieldUserValue userValue in FirstLineApprovers)
{
  //...
}

让SharePoint Manager 2007或2010()检查字段的InternalName属性,因为这是项[]使用的属性


不过要小心——虽然您可以使用它来更改属性,但不应该

+1:这个答案是正确的。您可以看到,
as string
类型转换失败,因为无法将
SPFieldUserValueCollection
大小写转换为string。因为您使用了防御性
作为字符串
语法,所以没有例外;仅
null
string FirstLineApprovers = item["First_x0020_line_x0020_approvers"] as string; 
string SecondLineApprovers = item["Second_x0020_line_x0020_approver"] as string; 
SPFieldUserValueCollection FirstLineApprovers = (SPFieldUserValueCollection ) item["First line approvers"];

foreach (SPFieldUserValue userValue in FirstLineApprovers)
{
  //...
}