2008年03月31日

二次元配列をもっとビュー 3

三回目。今回はソートしたときに DataGridView が無視してくれる問題についてです。といってもまあ自明の理なんですがね、

まず IBindingList の解説を少し引用しましょう。

ApplySort メソッドまたは RemoveSort メソッドを呼び出す場合は、Reset 列挙体を使用して ListChanged イベントを発生させてください。

ということでこれが原因です。このイベントを使わないと、DataGridView はデータソースにソートが適用されたタイミングを窺い知ることができません。

ではさくさく実装していきましょう。

続きを読む
posted by Hongliang at 07:20| Comment(0) | TrackBack(0) | .NET | このブログの読者になる | 更新情報をチェックする

2008年03月29日

二次元配列をもっとビュー 2

前回の続き。今回はソート機能の実装です。あ、その前に言っておくと、この TwoDimensionalArrayView<T> クラスはできる限り DataView に近づけたクラス構成にするつもりです。

さて、ソートの実装自体はそんなに難しいことではないでしょう。まず前回の雛形からソート関連の部分をピックアップします。

private List<TwoDimensionalArrayRowView<T>> arrangedViews;
bool IBindingList.SupportsSorting { get { return false; } }
bool IBindingList.IsSorted {
    get { throw new NotSupportedException(); }
}
ListSortDirection IBindingList.SortDirection {
    get { throw new NotSupportedException(); }
}
PropertyDescriptor IBindingList.SortProperty {
    get { throw new NotSupportedException(); }
}
void IBindingList.ApplySort(PropertyDescriptor property,
                            ListSortDirection direction) {
    throw new NotSupportedException();
}
void IBindingList.RemoveSort() {
    throw new NotSupportedException();
}

次に DataView のソート関連のメンバをピックアップ。

public bool ApplyDefaultSort { get; set; }
public string Sort { get; set; }

このうち ApplyDefaultSort は、「PrimaryKey を持っている DataTable の Sort が空のとき」に「PrimaryKey を使ってソートする」かどうか、というプロパティなので二次元配列には関係なし、除外。

続きを読む
posted by Hongliang at 12:31| Comment(0) | TrackBack(0) | .NET | このブログの読者になる | 更新情報をチェックする

2008年03月27日

二次元配列をもっとビュー 1

前回の 二次元配列をビュー では取り敢えず二次元配列をデータソースとして扱えるビューを作りました。今回はもうちょっと拡張します。長くなりそうなので連載形式で順次改造していくことにしようかと思っています。

データにはソートがつき物です。二次元配列自体はソートできませんが、そのビューならソートできてもおかしくありません。DataTable も行の並び替えはありませんが DataView にはソートが用意されていますし。

前回の TwoDimensionArrayView ではソートをサポートしていませんでした。というかそもそも前回のような実装ではソートの実現は困難です。構成から見直す必要があります。

その前にまず DataGridView などでカラムをクリックしたときなどにどのようにしてソートが実現されるのかを確認しましょう。前回にも書いた、データソースに使用できるインターフェイスを再掲します。

続きを読む
posted by Hongliang at 08:15| Comment(0) | TrackBack(0) | .NET | このブログの読者になる | 更新情報をチェックする

ここ(hongliang.seesaa.net)で公開しているものについて、利用は自由に行って頂いて構いません。改変、再頒布もお好きになさって下さい。利用に対しこちらが何かを要求することはありません。

ただし、公開するものを使用、または参考したことによって何らかの損害等が生じた場合でも、私はいかなる責任も負いません。

あ、こんなのに使ったってコメントを頂ければ嬉しいです。

×

この広告は1年以上新しい記事の投稿がないブログに表示されております。