2

SPGridView を SPList にバインドしています。コード サンプルが示すように、次のコードを使用して、リストに基づいてデータビューを作成しています。

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

私が見つけたのは、結果のデータビューの列名が、SPList で定義されたソース フィールドと常に一致するとは限らないということです。たとえば、名前の付いた列があります

  • 説明
  • ReportItem
  • レポートステータス

    これらは、次のような列名で結果のデータビューに表示されます

  • ReportType0
  • レポートステータス1

これにより、重複したフィールド名が定義されていると思われますが、そうではないようです。

ここで基本的な何かが欠けているようですか?ありがとう。

4

3 に答える 3

4

このGetDataTableメソッドは、Web インターフェースに表示される表現ではなく、列の表現internalName(または- どちらかはよく覚えていませんが、同じであることが多い) を返します。私はカバーの下でCAMLクエリを行うと信じています.CAMLのフィールド参照にはそれを使用する必要があります.staticNameTitleGetDataTableinternalName

このブログでは、もう少し詳しく説明しています。

于 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 DataSource も使用することをお勧めします。これを説明する投稿を作成しましたhere .

于 2009-05-09T13:22:38.143 に答える