DataGridのある行を任意位置まで移動させるには?


たべ  2005-02-25 20:10:21  No: 119909

お世話になります。
環境はWinXPのVB.NET2003です。

現在WindowsフォームにDataGridを表示してます。
すでに表示されている一覧のある一行を、任意の位置に移動する方法でよい方法が浮かばず行き詰ってます。
例えば10行表示されているうちの7行目を3行目にもっていく、というようなことをしたいのです。
一番理想なのはDataGridの外にある上矢印のボタンをクリックすると選択した行の位置が上に上がる(またその逆も)ようなことが出来れば・・・と思ってます。
何かよい方法がありましたらぜひご教授ください。
よろしくお願いいたします。


Say  2005-02-25 21:40:47  No: 119910

テーブル上に行位置制御用フィールドを持っておいて、
その値を書き換えて再クエリとか。


たべ  2005-02-25 22:09:09  No: 119911

Say様
アドバイスありがとうございます。
その方法も一度考えまして昨日作業してましたら
上手く制御できずにとまっておりました。
そのソースをもう一度見てまたご質問させていただくと思います。
(昨日のソースが別場所にあるためすぐ参照できないので)
そのときはどうぞまたよろしくお願いいたします。


たべ  2005-02-25 22:11:17  No: 119912

Say様
すいません、再クエリとありますが、どのような動作が
再クエリということになりますでしょうか。
私が認識していたのはテーブルを作成してSetDataBinding
を行うというものですが、正しいでしょうか。


特攻隊長まるるう  2005-02-26 10:32:22  No: 119913

>すいません、再クエリとありますが、どのような動作が
>再クエリということになりますでしょうか。
再びクエリを発行する以外に考えられないと思いますが…(^^;)。
勉強しなきゃ分からないほどの深い意味は無いでしょう。

質問の内容にもよりますが、初心者掲示板でひねくれた
回答を付ける常連は居ませんので、単語の意味をそのまま
理解する努力をして下さい。それでも理解できない場合は
99%質問者が原因で、単なる勉強不足か難しく考えすぎてる
だけです。

Say さんの案は連番用のフィールドを追加して、その連番で
並び替えた検索結果を表示しておき、行の入れ替えをする処理
ではお互いの連番フィールドのデータを入れ替え(データベース
のデータを書き換え)、再び連番で並び替えた検索結果を得れば
表示された結果は行を入れ替えた結果となる。
…というだけの事です。


Say  2005-02-26 17:26:36  No: 119914

解説、感謝します。

補足。

>Say さんの案は連番用のフィールドを追加して、

個人的見解ですが、連番にしないほうがいいでしょう。
昔のBASICの行番号のように、10番毎とか100番毎の飛び番にしておけば、
行位置移動時の行位置制御用フィールドの書き換え回数を大幅に減らせます。
(ただし、行移動作業のたびに番号間隔が変化していきますから、
どこかのタイミングで定期または不定期に再採番してやる仕組みが
必要になります。)

勿論、初期値は自然数の連番にして、小数や負数を許可する
という手もありますが、副作用と速度の観点からあまりおすすめできません。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加