- - PR -
ソート後のポインタ
1|2|3
次のページへ»
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-06-23 14:27
いつもお世話になります。
DataGridのソートについてお聞きしたいことがあります。 DataGridで編集ボタンとかを押すと、その行の色が変わりますよね。 その状態でソートすると、この色が指定されている行について いかないんです。 【昇順】 1行目 キー値:1 2行目 キー値:2 3行目 キー値:3 ←現在はココが指定されて色が違う ↓ 【降順】 1行目 キー値:3 ←降順ソート後はココの色が変わってほしい 2行目 キー値:2 3行目 キー値:1 ←同じ場所が指定されたまま 全く検討がつきません。 申し訳ございませんが、ご教授のほどよろしくお願いいたします☆ | ||||
|
投稿日時: 2005-06-23 21:49
SelectedIndexを更新する。
_________________ | ||||
|
投稿日時: 2005-06-24 10:27
SelectedIndexを以下のように使ってみました。
DataGrid1_ItemCommand -------------------------- If e.CommandName = "Select" Then Session("Index")=DataGrid1.SelectedIndex End If ------------------------------------------------ ここで取得した値を確認すると、どの行の[選択]ボタンを 押しても "0" になってしまいます。 で、DataGrid1.SelectedIndexではなく、e.Item.ItemIndexを つかってみたところ、その行のインデックスを取得しました。 でも、、、この値をソート後に戻してもやはり同じ結果に なるのではないでしょうか、、、。 私の考え方がちがうのかなぁ〜。 [選択]ボタンをクリックしても、その行の色が変わらないように する方法も検討してみようかと思ってます。 | ||||
|
投稿日時: 2005-06-24 10:38
SelectedIndex は自動的には設定されません。
そもそも、「編集ボタンとかを押す」ときに、 どうやって「色を変え」ているのでしょうか。 SelectedIndex を使っていないなら、EditItemIndex ? であったとしても同様で、自分で EditItemIndex を 再設定する必要があります。 | ||||
|
投稿日時: 2005-06-24 13:11
DataGridの自動フォーマットで「カラフル4」ってやつを
選択しました。 そうするとボタンを押したときに色が変わるんです。 今、色が変わらないようにできないかを調査中・・・です。 SelectedIndexを自分で再設定するということは、 DataGridの現在の行数を取得して、その値をSelectedIndexに 設定するということでしょうか? | ||||
|
投稿日時: 2005-06-24 13:58
すみません。間違いを訂正。
SelectedIndex は設定されるようですね。 「カラフル4」に限らず、「選択したところの色を変えない」 だけであれば、SelectedItemStyle を設定しなければいいかと思います。 | ||||
|
投稿日時: 2005-06-24 14:19
ありがとうございます。
SelectedItemStyleを設定すれば良いというのは何となく気づいていましたが どんな指定をすれば良いのかで悩んでいました。 やけくそになってSelectedItemStyleの設定部分を消してみたら、 何と!成功!! お騒がせいたしました。 また、別の件で悩みがあるので、もう少し調べてから質問させていただきます。 今後ともよろしくお願いいたします。 | ||||
|
投稿日時: 2005-06-24 22:32
あ゛〜、終わるな、終わるな ヾ(^-^;
でしょうね。まだ変更されていないですから。 イベントが実行される順番に気をつけてください。ItemCommandイベントは、コマンドが発行されたときに励起されます。ここでどんなアクションをおこすのか振り分けがされ、実装されている必要なアクションが実行されます。SelectedIndexが換わるのは、選択を変更するというアクションを起こしたときです(そして、インデックスが変更された、というイベントが発生します)。 また、このインデックスを保存しても無駄です。これはインデックスです。最初、3番目が設定されており、3番目にあったアイテムが1番目に換わりましたが、3番目が選択されたままなんですよね。ということは、インデックスは3のままだということです。必要なのは、「何が選択されているか」で、ソートによって選択されていたものが「何番目に移動したか」です。したがって、ソートした後に「選択しているアイテムが何番目に移動したか」を調べ、その値をSelectedIndexに指定してやる必要があります(当然、インデックスが変更された、というイベントが発生します)。 あと、余分なことになりますが、セッション変数に直に格納するのではなく、何らかのクラスインスタンスに格納してから、格納しましょう。破棄するの、大変じゃないですか? # え?Clearで一発? もうひとつ。ポストバックが発生する毎に、DataBindしたりは、していないですよね?SelectedIndexが0というのが気になって。1行目選んで2行目選んだら、1回目は−1、2回目は0になると思うんだけど??? _________________ |
1|2|3
次のページへ»