ラベル DataRepeater の投稿を表示しています。 すべての投稿を表示
ラベル DataRepeater の投稿を表示しています。 すべての投稿を表示

2009年8月26日水曜日

DenpyoManとDataGridView

社内で講習会なぞをやっているので、VB6・VB.Net共に調べたり話したりすることがそれなりにあるんだけど、グリッド系コントロールはどれもこれも基本思想としては一緒な気がしているんだよね。

異なるのはUIデザイン部分が殆どで、大枠としての制御(値の使い方等)はそんなに違いがないように思えるなぁ。DataRepeaterだって、細かい部分は異なっても大枠の制御は似たようなもんだし。

この部分で違う設計が思いつけば意外とイケるコンポーネントにできるかも。

どうもグリッドという物自体に行き詰まりを感じる・・・

2009年3月17日火曜日

DataRepeater.ItemTemplate内部でのTabIndex

アンバウンドで使いたいがためにカスタマイズ中w
色々手を入れていると少々気になる挙動が。

デザイン時にコントロールをドロップして、ItemTemplateに追加するんだけどこの時各コントロールのTabIndexは重複できるんだねぇ。今までは重複不可と思っていたんであまり意識しないで順番につけていたんだけど。

EnterキーをTabに変換するようDataRepeater.ProcessDialogKeyメソッドをオーバーライドしてみたんだけど、デザイン時にTabIndex=0としておいたコントロールが、何故だか一番最後にフォーカスを得るようになってしまうんだよね。ItemTemplate内部ではちゃんと0オリジンで設定されているんだけど、実際に表示されているカレントアイテム内部ではTabIndex=0のコントロールのTabIndexが末尾のインデックスに置き換わっていたんだよねぇ。

最初は自分が追加したロジックを疑っていたんだけど、TabIndexなんて調整しないからなー、と試しに試してようやく現象発覚。

デザイン全部直してもらうなんてのも大変なので、とりあえずどこかのタイミングでTabIndex再調整ロジックが動くようにしておけばなんとかなるかな・・・?

多分行ヘッダが追加された時に再割り当てされているんだとは思うんだけど・・・。

2009年2月7日土曜日

DataRepeaterにDataGridView その2

調査の為に、素のDataRepeaterを使って明細にDataGridViewを追加してみた。 結果はアウト。

ここから考えるとDataRepeaterというよりもデータバインディングの仕様の感じがするなぁ。今までもっていたイメージは「選択されているレコードに対する子レコード群をリレーションを通じて取得、表示」だと思っていたんだけど、それだとこの状態にはならないよね。

各行のレコードに対する子レコード群を・・・という仕様だったら恐らく望んでいる状態になると思うんだよね。
そうではなくてあくまでもカレント行に対する子レコード群、だから各行に張り付けたDataGridViewでは同じレコードが表示されているんだろうと思った(ついでに同じ動作をするのも恐らくはデータバインディングのせい)。

んー。これはどうしようかなぁ・・・。
感覚としてはバインディングしている値に細工するか、DataGridView側でフィルタ的な動作を持たせてリレーションを使わないバインディングをすれば見た目は同じ感じになりそうなんだよなぁ。

でも何かひっかかっている・・・w

2009年2月3日火曜日

DataRepeaterにDataGridView

いや・・・なんというかそんな事するな、という感じがしないでもないんだけど、DataRepeaterコントロールのテンプレートにDataGridViewを追加してみてうまいこと使えるかどうかやってみようと色々試してみたんだよね。

データバインディングの設定なのかわからないんだけど、今のところはDataSetに設定したリレーション通りにはDataGridViewへ表示されないんだよなぁ。表示されるのはDataRepeater1件目のデータに関連する子データのみ。また、DataRepeater内部のDataGridViewをクリックすると、すべてのDataRepeater明細行に存在するDataGridViewが同じ挙動を示すのでものすごく怪しい見た目にw

ちなみに今回も普通にバインディングしているわけではなく、実装者にはアンバインドで使っている気持にするような拡張を施しているのでそこが原因という気がしないでもない。というか、ほぼそのあたりに原因があるんだろうけどねぇ。

右クリックで行削除とかそのあたりは何とかなったんだけど・・・DataGridViewが絡むとやっぱり苦労するw

2008年3月27日木曜日

DataRepeaterコントロール

DataRepeater

ちと今回は別の話題として。

VisualBasicPowerPack3.0として最近アップデートリリースされた追加コントロールライブラリ。ShapeとかLineとかVB6までの開発者を対象としたコントロールが含まれているだよね。その中に要望が結構高めだったDataRepeaterコントロールが。

とりあえず入れてみてささっと触ってみると、デザインがドラッグドロップでできる分やっぱり使い勝手いいなぁ(w、などと思えた。まぁ.Net特有の「DataSetありき」というのはいたしかたないところだろうけど。

ツールバーが強制的に配置されてしまったり(消せるけど)するけどそこらへんは大した問題じゃなさそう。どちらかというとDataGridViewの様に、常に新規行を表示させる設定がない(デザイナ上ではない。プログラムからは行えるハズ・・・未確認)とかそういうところの使い勝手が異なるのが気になるくらいかな。

このサイトでやっている伝票入力用セルを作るというのも、こいつがもう少し早くに見えていれば実行しなかったかも(w
あー、でも列ヘッダがないとかそういったところで色々手を加えないといけないから、そんな変わらなかったかな?