2012-08-07 70 views
0

我有一個名爲「Employees」的共享點列表。我有以下欄目:循環選擇性SharePoint列表列

  • 標題
  • 名字
  • 頻帶1
  • 波段2
  • BAND3
  • Band4

我有20個帶列,但我只包括4樂隊專欄爲了更好地解釋問題。我知道如何從特定的列中的數據,但我要如何去執行下列操作:

  1. 通過每一個「帶」列只從上面
  2. 循環列表獲取「帶」總列數和獲得/在每個頻帶

的顯示項/值我的第一個,雖然它有一個循環,通過所有樂隊列循環,然後有一個循環內部獲取/顯示內部各項目/值每個樂隊,但我不完全確定如何去做它

條任何意見或建議將不勝感激,

感謝,

回答

1

要獲得全部頻段的領域,我會做這樣的事情

var fieldLookup = mySpList.Fields.Cast<SPField>() 
    .Where(f => f.Title.StartsWith("Band")) 
    .Select(f => { 
      int bandNo; 
      bool successful = int.TryParse(f.Title.Substring(4), out bandNo); 
      return new { Id = f.Id, BandNo = bandNo, Success = successful }; 
     }) 
    .Where(a => a.Success) 
    .ToDictionary(a => a.BandNo, a => a.Id); 

這應該給你一個Dictionary<int, Guid>映射的帶號從列標題到該字段的ID。

然後,您可以使用這些ID來獲取值。例如,你可以建立<FieldRef>元素的列表傳遞到SPQuery,或者你可以做

foreach (SPListItem item in myList.Items) 
{ 
    Console.WriteLine("Item {0}", item.Title); 
    foreach(int bandNo in fieldLookup.Keys) 
    { 
     Console.WriteLine("Band {0}: {1}", bandNo, item[fieldLookup[bandNo]]); 
    } 
} 
+0

感謝您的幫助Rawling,這看起來很有希望,現在我會嘗試了這一點。 – 2012-08-07 11:21:40