SharePoint list.items.GetDataTable列名称与字段名称不匹配
问题描述:
我将SPGridView绑定到SPList。如代码示例所示,我使用以下代码基于列表创建数据视图。SharePoint list.items.GetDataTable列名称与字段名称不匹配
dim data as DataView = myList.Items.GetDataTable.DefaultView
grid.DataSource = data
etc...
什么我发现是,在导致数据视图的列名并不总是与在SPList定义的源字段。比如我有列名为
- 说明
- ReportItem
-
ReportStatus
这些显示在其列名称所产生的数据视图像
- ReportType0
- ReportStatus1
这使我认为我有重复的字段名称定义,但似乎并非如此。
好像我缺少一些基本的东西在这里? 谢谢。
答
的GetDataTable
方法返回internalName
(或staticName
- 我不记得肯定它,但他们往往是相同的)列的表现形式,而不是Title
表示,这是你在Web见接口。我相信GetDataTable
会在封面下做一个CAML查询,并且您必须使用那个internalName
作为CAML中的字段引用。
这blog更详细地谈论它。
答
因此,我在我的博客上发布了这个消息,但我写了一个可用的小实用方法,在获取数据表后,它基本上将DataTable中的列名重新映射为其友好名称。
DataTable table = list.GetItems(list.DefaultView).GetDataTable();
foreach(DataColumn column in table.Columns)
{
column.ColumnName = list.Fields.GetFieldByInternalName(column.ColumnName).Title;
}
希望帮助!