- PR -

GridViewのEmptyDataTemplate内のコントロールへのアクセス方法

1
投稿者投稿内容
BT
ベテラン
会議室デビュー日: 2006/09/24
投稿数: 81
お住まい・勤務地: Tokyo
投稿日時: 2007-02-06 21:07
お世話になります。

表題そのままになりますが、
GridViewのEmptyDataTemplate内に置いたコントロールにアクセスしたいと考えています。
(データがない場合の新規追加用です)

FooterTemplateの場合は、

TextBox test = (TextBox)GridView1.FooterRow.FindControl("TestBox");

てな感じでやると思うのですが、EmptyDataTemplateの場合には同様のアクセス方法が
見当たりません。試しにGridView1.FindControl("TestBox")としましたが駄目でした。

マイクロソフトの「プログラム☆簡単レシピ」
http://www.microsoft.com/japan/users/recipe/013/recipe4.aspx
では、生成されたhtmlから当該コントロールを検索をしており、
以前質問させてもらったスレッド
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=34683&forum=7
では、何でこの方法にしたのだろう?なんてことを書いたことがあるのですが、
もしかしてこのためなのかも?という気がしています。

直接アクセスできる方法は無いものでしょうか?
よろしくお願いします。
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2007-02-06 21:56
とりあえずこんな方法で操作できます。
http://dotnetfan.org/blogs/dotnetfanblog/articles/632.aspx

コントロールの階層が深くなってしまうので、そこをうまく取り出す必要がありますね。
BT
ベテラン
会議室デビュー日: 2006/09/24
投稿数: 81
お住まい・勤務地: Tokyo
投稿日時: 2007-02-07 07:36
どっとねっとふぁんさん、どうもありがとうございました。

この記事は確か前回の質問時にも読んだことがあるのですが、
その際は何故こうするのかが理解できなかった^_^;のですが、
今回はようやくですが理解できました。
無事、コントロールへのアクセスができ、値を取り出すことができました。

どうもありがとうございました。
Access
ぬし
会議室デビュー日: 2002/04/08
投稿数: 829
投稿日時: 2007-02-07 09:49
GridViewのEmptyDataTemplateにDetailsViewをネストさせたらどうでしょうか。

GridViewにDetailsViewをネストさせる
http://www.gxbrbwda.sv02.fsdotnet.net/Goto.aspx?id=070207VB-1

_________________
ASP.NET+Ajaxサンプル集 | JavaScript+Ajaxサンプル集
BT
ベテラン
会議室デビュー日: 2006/09/24
投稿数: 81
お住まい・勤務地: Tokyo
投稿日時: 2007-02-08 11:35
Accessさんアドバイスありがとうございます。
なるほど、いろんな方法があるんですね。

これは良いアイデアだと思い、試しにやってみました。
スペースの関係でEmptyDataTemplateを使っているため、
DetailsViewではなく、FormViewでFooterに似たデザインを作って
EmptyDataTemplateに入れ子にしてみましたが、
FormView内のコントロールにアクセスするところでエラーが出て躓いてしまいました。
ということで、この方式はちょっと保留にして
今回はどっとねっとふぁんさんの方式を採用させてもらいました。

といいながらこれも捨てがたいので、入れ子じゃなけりゃいいんじゃないと、
GridViewの外に出して、MultiViewコントロールでデータがない場合に
InsertモードにしたFormViewに切替、おおっ出来た・・・・
ん?これって、考えてみると(考えなくても)GridView,FormViewの
いわゆる普通の使い方じゃないか!^_^;

とりあえず、いろんな方法があるってことが分かりました。
どうもありがとうございました。
1

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