- PR -

DataViewのSort機能

投稿者投稿内容
NAL-6295
ぬし
会議室デビュー日: 2003/01/26
投稿数: 966
お住まい・勤務地: 東京
投稿日時: 2004-02-19 09:37
NAL-6295です。
引用:

さくらさんの書き込み (2004-02-18 17:29) より:



'グリッドのバインドソースに親DataTable「TestParent」を設定する
'※myGrid.DataSource = myDVM では3階層になる(疑問点)
'※myGrid.DataSource = myDVM.DataViewSettings("TestParent").Table
' は下記と同じ結果となる
myGrid.DataSource = myDVM.DataSet.Tables("TestParent")




上記のDataSourceへのセットのうち、下二つについては、DataTableを直接セットしているのでソートされません。
一番上の「3階層」になる。でセットしたとき、ソートはされていますか?

NAL-6295
ぬし
会議室デビュー日: 2003/01/26
投稿数: 966
お住まい・勤務地: 東京
投稿日時: 2004-02-19 10:43
NAL-6295です。

えっと、結論だけ述べます。
3階層になるパターンではソートされるみたいですね。
だけど、3階層は嫌ですよね。
では、どうしたらいいか。

コード:
        MyGrid.DataSource = myDVM.CreateDataView(myDVM.DataSet.Tables("TestParent"))




で、できます。

理屈的には・・・
DataViewManagerのCreateDataViewで作成したDataViewは、DataViewManagerを知っている為、指定したテーブルに関連するテーブルのDataViewで指定したソートも有効になる。

という事です。
さくら
ベテラン
会議室デビュー日: 2004/02/12
投稿数: 76
投稿日時: 2004-02-19 14:56
お返事ありがとうございます。

ちゃんとソートされて2階層表示されました!
ただ、私はソートのときに親DataTableを指定して行っていましたが、
それではソートはされませんでした。
(なぜ「列がありません」のエラーが出なかったのか疑問ではあります。)
なので、子DataTableに変えてみたところ、正しく表示されました。

本当にありがとうございました!!

(ソース変更部分)
---------------------------------------------------------------
myDVM.DataViewSettings("TestParent").Sort = "PAGE_NO ASC"

myDVM.DataViewSettings("TestChild").Sort = "PAGE_NO ASC"
---------------------------------------------------------------

スキルアップ/キャリアアップ(JOB@IT)