- PR -

【DetailsView】TextBoxのText(Value)を取得する方法

1
投稿者投稿内容
Marker
会議室デビュー日: 2005/07/11
投稿数: 10
投稿日時: 2005-11-15 16:39
いつもお世話になります。
開発環境は、ASP.NET2.0 VWD2005 Beta2(VB)です。

DetailsViewがEditModeの時、TextBoxからClientIDとText(Value)を取得する為に、
下記コードを実行しましたが、

○:ClientIDは取得出来る→"DetailsView1_ctl01"
Dim tbid As String = CType(DetailsView1.FindControl("ctl01"), TextBox).ClientID

×:Text(Value)が空白のまま→""
Dim tbid As String = CType(DetailsView1.FindControl("ctl01"), TextBox).Text

となります(TextBoxには値が表示されています)
どなたかText(Value)を取得する方法のヒントを頂けないでしょうか?
よろしくお願いします
trapemiya
大ベテラン
会議室デビュー日: 2005/07/30
投稿数: 102
投稿日時: 2005-11-16 11:14
どのタイミングで取得しようとされてますか?
当方で試したところ、問題なく取得できています。(C#ですが)
また、ctl01は保障されていないと思いますので、実際には他の方法で値を取得した方が良いと思います。いやそうじゃない、ctl01は保障されているという情報をお持ちでしたら、教えていただくと喜びます。
Marker
会議室デビュー日: 2005/07/11
投稿数: 10
投稿日時: 2005-11-16 13:26
trapemiya様
返信ありがとう御座います。

>どのタイミングで取得しようとされてますか?
Protected Sub DetailsView1_ItemCreated(〜)で取得しようとしております。

>また、ctl01は保障されていないと思いますので、実際には他の方法で値を取得した方
>が良いと思います。いやそうじゃない、ctl01は保障されているという情報をお持ちで
>したら、教えていただくと喜びます。
HTMLとTraceにてctl01と確認いたしましたが、保障とは何を指しているのでしょうか?
他に値を取得する方法が思い浮かびません、ご教授頂けると幸いです。

質問ばかりで、回答になっていなくて申し訳ありません。
よろしくお願いいたします。
trapemiya
大ベテラン
会議室デビュー日: 2005/07/30
投稿数: 102
投稿日時: 2005-11-16 17:16
>Protected Sub DetailsView1_ItemCreated(〜)で取得しようとしております。

DetailsView1_DataBoundだと取得できるようです。

>HTMLとTraceにてctl01と確認いたしましたが、保障とは何を指しているのでしょうか?
>他に値を取得する方法が思い浮かびません、ご教授頂けると幸いです。

ctl01はASP.NET1.1の頃からこのパターンで自動生成されていましたが、あくまで自動生成される名前ですので、これをプログラムで直接使っていいものかわからないという意味で書きました。
他の方法としては、以下の感じでいけると思います。
CType(DetailsView1.Rows[2].Cells[1].Controls[0], TextBox).Text
Marker
会議室デビュー日: 2005/07/11
投稿数: 10
投稿日時: 2005-11-16 18:14
trapemiya様
何度も、ありがとう御座います。

>DetailsView1_DataBoundだと取得できるようです。
Protected Sub DetailsView1_DataBound(〜)で無事、取得できました。

>ctl01はASP.NET1.1の頃からこのパターンで自動生成されていましたが、あくまで自動
>生成される名前ですので、これをプログラムで直接使っていいものかわからないという
>意味で書きました。
たしかに、おっしゃる通りだと思います。
ご教授いただいた、下記コードを使用させていただきます。
Dim tbid As String = CType(DetailsView1.Rows(1).Cells(1).Controls(0), TextBox).Text

大変勉強になりました、ありがとうございます。
1

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