- PR -

DataGrid使用時のPanel位置について

1
投稿者投稿内容
rasc
会議室デビュー日: 2003/06/03
投稿数: 2
投稿日時: 2003-07-10 15:35
はじめまして。rascと申します。
いつも参考にさせて頂いております。

C#+ASP.NETでWebアプリの開発をしています。
DB内のデータを表示させるため、DataGridを使用し
実データ(5列)と[編集]ボタン(<asp:Button>)を設定しています。
編集モード時は[更新][キャンセル]ボタンを表示させています。

編集モードでは、編集対象データに関するの付属情報を
Panelコントロール内に追加したLabelで一時的に表示させているのですが、
Panel表示位置の取得が出来ず困っています。
(Panelは通常は非表示となっています)

クリックされた[編集]ボタンの絶対位置を調べて、
対象行のすぐ上(下)にPanelを移動&表示すればOK・・・と
考えたのですが、その絶対位置を取得する方法がわかりません。

[試したこと]
・該当すると思われるプロパティ探し
→見当たりません。。。
(Windowsフォームの"Button"では絶対位置の取得が可能)

・((Button)e.Item.FindControl("btnEdit")).Style["Top"]
→DataGrid上の[編集]ボタンには
Styleを指定していないため取得不能

・btnEdit.Attributes("Style")
→同上


Javascriptならクリックした場所の絶対位置が取得できますが、
マウスカーソルの先っぽの位置を取得するため
[編集]ボタン押下時の位置によりpanelが表示される位置に
若干のズレが生じます。

サーバサイドで特にStyle設定などを行っていない
webコントロールの絶対位置を取得することは、
そもそも可能なのでしょうか?

ご存知の方、よろしくお願いいたします。
cats
大ベテラン
会議室デビュー日: 2002/11/29
投稿数: 221
お住まい・勤務地: 東京
投稿日時: 2003-07-10 17:02
aspxのHTMLビューでpageLayoutプロパティをGridLayout(デフォルト)からFlowLayoutに変えて、各コントロールのstyleの中の位置指定を削除して下さい。

そうすると、重ならないで出るので、計算する必要はありません。
rasc
会議室デビュー日: 2003/06/03
投稿数: 2
投稿日時: 2003-07-10 17:25
catsさま

早速のお返事、ありがとうございます。
ご指摘の件ですが既にFlowLayout設定済みです。

>そうすると、重ならないで出るので、計算する必要はありません。

PanelはDataGridの上に重なって表示させたいと考えています。
必要な時だけ表示されるレイヤみたいなイメージです。

表示させるデータ件数が多いため、
DataGridではページングを有効&ページサイズを20行としています。
Panelの表示位置を(例えば画面上部で)固定してしまうと、
1行目のデータで[編集]ボタンをクリックしたときには
上部にあるPanelは見えますが、20行目のデータで
同様の操作を行うと画面をスクロールしないとPanelは表示されません。

データ編集時のみ、該当データに対する付属情報
(あくまでも参照するだけ)を常に表示させたいのです。

なお各コントロールの表示状態の遷移(?)は以下のとおりです。
1)ページ起動時:
Grid:表示/Panel:非表示
2)[編集]ボタン押下時:
Grid:表示/Panel:表示(カレント行のデータに対する付属情報記載)
3)[キャンセル]ボタン押下時:
Grid:表示/Panel:非表示


上記のような動作は可能でしょうか?
1

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