SharePoint list.items.GetDataTable列名称与字段名称不匹配

时间:2008-11-12 21:45:16

标签: sharepoint datatable dataview

我将SPGridView绑定到SPList。正如代码示例所示,我使用以下代码基于列表创建数据视图。

dim data as DataView = myList.Items.GetDataTable.DefaultView
grid.DataSource = data
etc...

我发现结果数据视图中的列名并不总是与SPList中定义的源字段匹配。例如,我有名为

的列
  • 说明
  • ReportItem
  • ReportStatus

    这些显示在结果数据视图中,列名如

  • ReportType0
  • ReportStatus1

这让我认为我定义了重复的字段名称,但似乎并非如此。

好像我在这里缺少一些基本的东西? 感谢。

3 个答案:

答案 0 :(得分:4)

GetDataTable方法返回internalName(或staticName - 我不记得确定哪些但它们经常是相同的)列的表示,而不是Title表示,这是您在Web界面中看到的。我相信GetDataTable会在封面下进行CAML查询,您必须使用internalName来进行CAML中的字段引用。

这个blog更详细地讨论了它。

答案 1 :(得分:4)

所以我在我的博客上发布了这个,但是我写了一个你可以使用的实用工具方法,在你获得数据表之后,它基本上将DataTable中的列名重新映射为友好名称。

DataTable table = list.GetItems(list.DefaultView).GetDataTable();
foreach(DataColumn column in table.Columns)
{
   column.ColumnName = list.Fields.GetFieldByInternalName(column.ColumnName).Title;
}

希望有所帮助!

答案 2 :(得分:0)

你还能做什么(如果你使用的是.NET 3.5)是使用匿名类型并绑定它。如果您这样做,您可能也想使用Linq DataSource。 我发了一篇文章解释了这个here