2012-08-07 71 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