- PR -

ヘッダを2行にしたDataGridのItemCommandについて

1
投稿者投稿内容
たつ
常連さん
会議室デビュー日: 2005/11/21
投稿数: 39
投稿日時: 2006-07-20 16:05
いつもお世話になってます。

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=24303&forum=7&start=8
↑で、DataGridのヘッダを2行にしたところ、ItemCommandで取得してくる行がずれてしまいました。

画面上3行目のセルをクリックしたはずが、サーバーで認識されるデータは2行目のものとなってしまうのです。
ヘッダの追加で行が増えていることが原因だと思うのですが、解決策が見出せません。。
どなたかご教授お願いします。
ひろれい
ぬし
会議室デビュー日: 2006/03/02
投稿数: 486
お住まい・勤務地: 万博開催地
投稿日時: 2006-07-20 17:45
ヘッダを除いての3行目なのでしょうか?

参考:[ASP.NET]DataGridコントロールの各セルにアクセスするには?
たつ
常連さん
会議室デビュー日: 2005/11/21
投稿数: 39
投稿日時: 2006-07-20 18:26
ヘッダを除いた3行目です。

ヘッダを除いて全部で20行あるとすると、indexは0〜19。
そこにヘッダを追加すると、index0が追加したヘッダとなり、indexがずれ込んでアイテムは1〜20となります。

そこで、クリックした行を取得して、+1したデータを取得するように作ってみたのですが、datagridのインデックスは0〜19のままのようで、20のデータを取得できないのです。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-07-20 22:23
内部データが 0-19、
表示データが 1-20。

だったら足さずに、引けばいいんじゃない?(もちろん、-1 は弾く)
たつ
常連さん
会議室デビュー日: 2005/11/21
投稿数: 39
投稿日時: 2006-07-21 14:22
jittaさん
内部データのインデックスは0-20になってるんです。
分かりにくかったかと思うのでもう一度説明を。説明難しいですね。。

もともとインデックスが0-19だったデータにヘッダーを追加することで、データのインデックスは0-20となるはずです。(実際インデックス0はヘッダーで、1が一つ目のデータでした。)
しかし、内部データは0-19のインデックスしか認識しないままで、インデックス20にするとエラーになってしまいます。

画面の3行目のセルをクリックするとサーバーにsenderとeが渡されます。そのeに何行目をクリックしたかの情報があるのですが、どうやら画面上ではヘッダーをカウントせずにインデックス2を渡していて、内部では0がヘッダーなのでインデックス2は2行目のデータを取得してしまう。

eからデータを取得できず、DataGridからインデックスを操作してデータ取得しようとしても最終行を取得しようとするとエラーになってしまう。どうにかこの状況を打破できないでしょうか?
todo
ぬし
会議室デビュー日: 2003/07/23
投稿数: 682
投稿日時: 2006-07-23 00:59
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=8549&forum=7
たつ
常連さん
会議室デビュー日: 2005/11/21
投稿数: 39
投稿日時: 2006-07-25 10:16
todoさん情報ありがとうございます。
ItemCreatedでヘッダーを追加する方法は確かに試していなかったのですが、ItemDataBoundで追加した場合と結果は同じでした(><)
まうさんの記述から、正しく各行のデータを取得できてるみたいなので、自分と同じ現象は起こっていないようですね。
環境・ソース等細かく見れば解決できるのでしょうが、今回は工数等の関係でこんな単純なことに時間をかけていられず、Gridのヘッダーを非表示にし、テーブルで別にヘッダーを作成する方法を採りました。
ご協力ありがとうございましたm(__)m
1

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