- - PR -
ヘッダを2行にしたDataGridのItemCommandについて
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 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-07-20 17:45
ヘッダを除いての3行目なのでしょうか?
参考:[ASP.NET]DataGridコントロールの各セルにアクセスするには? |
|
投稿日時: 2006-07-20 18:26
ヘッダを除いた3行目です。
ヘッダを除いて全部で20行あるとすると、indexは0〜19。 そこにヘッダを追加すると、index0が追加したヘッダとなり、indexがずれ込んでアイテムは1〜20となります。 そこで、クリックした行を取得して、+1したデータを取得するように作ってみたのですが、datagridのインデックスは0〜19のままのようで、20のデータを取得できないのです。 |
|
投稿日時: 2006-07-20 22:23
内部データが 0-19、
表示データが 1-20。 だったら足さずに、引けばいいんじゃない?(もちろん、-1 は弾く) |
|
投稿日時: 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からインデックスを操作してデータ取得しようとしても最終行を取得しようとするとエラーになってしまう。どうにかこの状況を打破できないでしょうか? |
|
投稿日時: 2006-07-23 00:59
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=8549&forum=7
|
|
投稿日時: 2006-07-25 10:16
todoさん情報ありがとうございます。
ItemCreatedでヘッダーを追加する方法は確かに試していなかったのですが、ItemDataBoundで追加した場合と結果は同じでした(><) まうさんの記述から、正しく各行のデータを取得できてるみたいなので、自分と同じ現象は起こっていないようですね。 環境・ソース等細かく見れば解決できるのでしょうが、今回は工数等の関係でこんな単純なことに時間をかけていられず、Gridのヘッダーを非表示にし、テーブルで別にヘッダーを作成する方法を採りました。 ご協力ありがとうございましたm(__)m |
1