- PR -

DataGridで表示先頭行の指定について

1
投稿者投稿内容
SWELL
会議室デビュー日: 2003/03/24
投稿数: 18
投稿日時: 2003-03-24 10:19
こんにちは!
現在VBにてWebアプリを開発しています。
早速質問なのですが、DataGridで任意の行を先頭行にして表示
することは可能でしょうか?
やりたいこと)
  DataGridに40行あり31行目を選択し、遷移先の画面で処理後
  DataGridを再描画する際、31行目の色を変えて、31行目が表示内の
  先頭に選ばれている。
どなたかご存知の方がいらっしゃいましたらお教えください。
よろしくおねがいします。
一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2003-03-24 10:44
>表示内の先頭に選ばれている

というのは、選択行は相変わらず31行目に表示して、画面が31行目が一番上に来るようにスクロールされている状態で表示するということですか?
それともDataGridの一番先頭の行に、31行目だった行を移動するということですか?

前者は<A>タグのname属性を使ってうまくやるくらいしか思いつきません。
後者は、DataSourceがDataTableとして話を進めますが、DataTable.Rowsプロパティで得られるコレクション内の問題にしている行をRemove()で削除して、次にその行をInsertAt()で先頭に挿入すればよいのではないでしょうか。

SWELL
会議室デビュー日: 2003/03/24
投稿数: 18
投稿日時: 2003-03-24 13:55
返信ありがとうございます。
一郎さんのいわれている前者のことを
目的としています。
>前者は<A>タグのname属性を使ってうまくやるくらいしか思いつきません。
ちなみにどのように記述すればよろしいのでしょうか?
ご存知でしたらお教えください。よろしくお願い致します。
一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2003-03-24 15:36
SWELLさんがどのようなプログラムを作っているのか判らないので、効率的な方法も分かりませんが・・・。

例えばTemplateColumnを追加して、
<a name="a<%# Container.ItemIndex %>" />
こんな風に全ての行にアンカーを付けて、呼び出す方で表示したい行を指定するとか。
(これはデータの内容ではなく何行目を先頭に表示したいかという指定しかできませんし、空の行が表示されてかっこ悪いかな・・・)

あるいは、ItemDataBoundイベントで先頭に表示したい行の時に
HyperLink hl= new HyperLink();
hl.Attributes["name"]="here";
e.Item.Cells[0].Controls.Add(hl);
のようにアンカータグを書いてもらって、hereの位置にリンクを張るとか。

しかし、SWELLさんがやりたいのはDataGridの選択ボタンを押したときのポストバックのレスポンスで指定行を先頭に表示なんですよね……。

SelectedIndexChangedイベントで"#here"へのRdirect…か……。そうするとViewStateの値は無くなってしまいますかね。
SWELL
会議室デビュー日: 2003/03/24
投稿数: 18
投稿日時: 2003-03-24 19:07
丁寧に説明ありがとうございます。
説明が不足していましたが作成しているプログラムは
マスタの一覧をDataGridで表示しメンテナンスしたいレコードを選択
選択された内容でメンテ用の画面を表示(先程の一覧のページを
書き換え)しデータベースを変更、一覧画面を再度呼び出し
といった流れです。
一郎さんの
>あるいは、ItemDataBoundイベントで先頭に表示したい行の時に
>HyperLink hl= new HyperLink();
>hl.Attributes["name"]="here";
>e.Item.Cells[0].Controls.Add(hl);
>のようにアンカータグを書いてもらって、hereの位置にリンクを張るとか。
で実現できそうな気がします。ありがとうございました。
また、他にいい方法などございましたら、お教えください。
1

スキルアップ/キャリアアップ(JOB@IT)