2

我将一个 SPGridView 绑定到一个 SPList。正如代码示例所建议的那样,我正在使用以下代码来创建基于列表的数据视图。

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

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

  • 描述
  • 报告项目
  • 报告状态

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

  • 报告类型0
  • 报告状态1

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

好像我在这里遗漏了一些基本的东西?谢谢。

4

3 回答 3

4

GetDataTable方法返回的是列的internalName(或者staticName——我不记得是哪个,但它们经常是相同的)表示,而不是Title您在 Web 界面中看到的表示。我相信GetDataTable会在幕后进行 CAML 查询,您必须将其internalName用于 CAML 中的字段引用。

这个博客更详细地讨论了它。

于 2008-11-12T22:19:41.017 回答
4

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

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

希望有帮助!

于 2009-01-22T17:52:04.570 回答
0

您还可以做的(如果您使用的是 .NET 3.5)是使用匿名类型并对其进行绑定。如果您这样做,您可能还想使用 Linq 数据源。我已经发了一个帖子来解释这个here

于 2009-05-09T13:22:38.143 回答