他のものと同様の Gridview の並べ替えに問題がありますが、データ テーブルではなくコレクション オブジェクトにバインドしています。
アプリケーションの既存のビジネス ルールとデータ アクセス層は、オブジェクトを持ち、その型のオブジェクトのコレクションが必要な場合は、CollectionBase を継承して IBindingList を実装する別のクラスを持つというパターンに従います。
デスクトップ アプリケーションの場合、グリッドビューをこれらのオブジェクトの 1 つにデータバインドするのは簡単で、列の並べ替えをオンにしても問題はありませんでした。デスクトップ アプリのプレゼンテーション レイヤーでは、すべてが「状態」でした。
現在、そのコードは新しい Web アプリケーション (ASP.NET 2.0、VB コードビハインド ページ) に移行されています。
コレクションの特定の列のみをグリッドビューに表示するために必要なことをいじりましたが、グリッドビューはかなり見栄えがしました。「ソートを許可」をオンにすると、問題が発生しました。
.Sorting メソッドなどがないというエラーが表示されます。これを調査したところ、ソースがデータ テーブルである場合、データビューで簡単に実装できるあらゆる種類のソリューションが見つかりました。しかしそうではありません - それはコレクションです。コレクションをXMLメモリストリームに変換してデータソースを「チープショット」しようとしました.ReadXMLをデータセットに戻そうとしましたが、うまくいきませんでした[ルート要素が見つからないというエラーは、データセットで取得した限りです。 ReadXml(ioTemp) ここで、ioTemp は xml シリアライザーで使用される System.IO.MemoryStream でした]。
古いデスクトップ アプリのおかげで、コレクションが読み込まれると gridview がコレクションを処理するので、コレクションの並べ替えについて心配する必要はありませんでした。実際、コレクションの .SortProperty、.SortDirection、および .ApplySort がすべて NotSupportedExceptions を介して実行されるのは「標準」です (私はプログラマーからずっと前にこのコードを継承しました)。
コレクションをデータ テーブルに変換する簡単な方法や、毎回データベースに戻らずにコレクションを並べ替える方法はありますか? オブジェクト データ ソースは、オブジェクトの構築方法が複雑なルールであるため機能しません。VS2005 のウィザードは、必要なこと (複数のテーブルから条件付きでデータを取得してオブジェクトを作成する) を処理できません。
前もって感謝します。