2010-07-27 47 views
2

我在Sharepoint中有兩個新的自定義列「一線批准者」和「二線批准者」列表。 此列的類型是「個人或組」,「允許多個選擇」設置爲「是」。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 

什麼是錯的,我怎麼能得到這個列的值?

回答

3

我解決我的問題。

正確的是投給SPFieldUserValueCollection,而不是

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

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

+1:這個回答是正確的。你會發現'as string'類型轉換失敗,因爲'SPFieldUserValueCollection'不能放入字符串。因爲你使用了防守'作爲字符串'的語法,所以沒有例外;只有'null'。 – kbrimington 2010-07-30 05:43:45

0

我會看你如何訪問列。由於返回值爲null,因此它似乎無法根據您提供的名稱來引用列。當您製作自定義列時,您可以指定一個名稱和一個顯示名稱。嘗試將「第一行批准者」更改爲列的名稱(假設您正在使用顯示名稱)

您能否提供更多有關列的信息?我假設數據類型是SPListItem,但知道您添加的自定義列的屬性會很有幫助。

0

如果使用瀏覽器中創建您的自定義列,請嘗試:

string FirstLineApprovers = item["First_x0020_line_x0020_approvers"] as string; 
string SecondLineApprovers = item["Second_x0020_line_x0020_approver"] as string; 
0

獲取的SharePoint管理器2007年或2010年(http://spm.codeplex.com)來檢查你的字段的INTERNALNAME財產,因爲這是性質該項目[]使用。

要小心 - 雖然你可以用它來改變屬性,但你不應該!