- PR -

DataGrid項目不可視について

投稿者投稿内容
BB.NK
大ベテラン
会議室デビュー日: 2004/02/05
投稿数: 138
投稿日時: 2004-02-26 09:04
お世話になっております。
C#.NETでWeb開発をしております。

・DataGrid テンプレート列の値(Visible=false)
・Grid内のチェックボックスがTrueのテンプレート列の値をHTMLボタンにて別ページへ送信

を考えております。
しかし、テンプレート列を不可視にした際、クライアント側で値を取得することができずにこまっています。
このテンプレート列の幅を0に設定すれば?と思い、
・HeaderStyle,ItemStyle,FooterStyle width=0
・Visible=false
として実行したのですが、列が表示されてしまいました。

不可視にした列の値をクライアント側で取得する方法はありますでしょうか?
以上、宜しくお願い致します。
BB.NK
大ベテラン
会議室デビュー日: 2004/02/05
投稿数: 138
投稿日時: 2004-02-26 09:53
追記です。

やはりWebボタンで実現したほうが現実的なのでしょうか。
どうしても、Webボタンだと動作的に好きになれないのですが。。。

引き続き、宜しくお願い致します。
無月 重造
ベテラン
会議室デビュー日: 2003/12/18
投稿数: 67
投稿日時: 2004-02-26 10:27
不可視にしたデータグリッドの行がクライアントサイドのソースに現れないということから

サーバサイドコントロールを不可視にする=クライアントサイドに出力しない

ということがいえると思います。
なので、この場合は素直にWebコントロールを使ったほうがいいのではないかと思います。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-02-26 10:51
 なんだかよくわからないのですが。

 visibleプロパティをfalseにすると、HTMLが生成されません。また、widthを0pxとしても、IEでは表示されませんが、その他のブラウザでは表示されます。
NAL-6295
ぬし
会議室デビュー日: 2003/01/26
投稿数: 966
お住まい・勤務地: 東京
投稿日時: 2004-02-26 10:55
NAL-6295です。

そのままの手法で実現するという前提であれば・・・

1.表示しないテンプレート列を用意するのではなく、
2.表示するテンプレート列にHiddenコントロールを「サーバサイドで実行」にして含む。
3.サーバ側でHiddenコントロールに値をセットする。

といった事で可能だとおもいます。

HTMLボタンを押下した時に、その値を送信すればいいのです。


[ メッセージ編集済み 編集者: NAL-6295 編集日時 2004-02-26 10:55 ]
無月 重造
ベテラン
会議室デビュー日: 2003/12/18
投稿数: 67
投稿日時: 2004-02-26 10:56
ちょっと考えてみて、不思議に思った点を

引用:

しかし、テンプレート列を不可視にした際



#値をかくして見えないようにするだけなら普通のBoundColumnでも問題ないわけで・・・
#不可視にするならテンプレート列を使う意味なんてないのでは?

意味不明ですね(汗
#訂正後:
列を全て不可視にするなら、別にその列を作る意味はないのでは?

そのあたりの説明をお願いできますか?



[ メッセージ編集済み 編集者: 無月 重造 編集日時 2004-02-26 11:01 ]
BB.NK
大ベテラン
会議室デビュー日: 2004/02/05
投稿数: 138
投稿日時: 2004-02-26 11:19
お返事ありがとうございます。

NAL-6295さんの方法で試してみます。
Tryしてまた、報告いたします。

(追記)
やりたいことは、不可視であってVisible=falseではありません。
ブラウザはIEのみです。

「テンプレートを使う理由」
別列にHTMLボタンを配置して単一行の値を送信させるため。
「HTMLボタンを使う理由」
ターゲット名、サイズ、その他を指定するため。
無月 重造
ベテラン
会議室デビュー日: 2003/12/18
投稿数: 67
投稿日時: 2004-02-26 11:41
引用:

「テンプレートを使う理由」
別列にHTMLボタンを配置して単一行の値を送信させるため。



単一行の値を送信するだけならDataTableを作って、それをDataGridにバインドして
ボタンが押されたときの、その押された行のDataRowを取り出してやればいいのでは?

引用:

「HTMLボタンを使う理由」
ターゲット名、サイズ、その他を指定するため。



ターゲット名って事は新しいページやフレームで区切られた別のページに送るのですか?
それならばそのイベントでRegisterStartUpScriptメソッドを使ってほかのページを更新するJavaScriptを作って、
そこにQueryStringなりSessionなりでデータを渡してやればいいような気がするのですが・・・

まぁ、前提としてWebボタンを使うことになってしまいますが。

[ メッセージ編集済み 編集者: 無月 重造 編集日時 2004-02-26 11:41 ]

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