@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

UpdateProgressに配置したコントロールの取り扱いについて

1
投稿者投稿内容
とら
ベテラン
会議室デビュー日: 2006/10/04
投稿数: 54
投稿日時: 2009-04-03 14:24
VisualStudio2008
C#
ASP.NET AJAX

の環境で開発を行っています。

UpdateProgressを画面上に配置してその中にButtonやTextBoxなどのコントロールを
配置しました。

以下はそのASPXの抜粋です。

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />
</ContentTemplate>
</asp:UpdatePanel>
<asp:UpdateProgress ID="UpdateProgress1" runat="server" DisplayAfter="0"
AssociatedUpdatePanelID="UpdatePanel1">
<ProgressTemplate>
<asp:Button ID="Button2" runat="server" Text="Button"
onclick="Button2_Click" />
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
</ProgressTemplate>
</asp:UpdateProgress>

VisualStudioでレイアウトやイベントロジックを定義したのですが、思うように動きません。

まずは、UpdateProgress内に配置したButton2_Clickのイベントロジックですが、
デザイン画面で該当するボタンをダブルクリックすると、上記のようにイベント
呼び出し部分が生成されたのですが、UpdateProgressの表示中にこのボタンをクリック
しても、何も起こりません。
PostBackの最中なんだから当然のようにも思いますが・・・・


次に、UpdateProgress内のTextBox2の値をフォームのロード時に編集するような
ロジックを記述しようと思い、以下のようなコードを書きました。
protected void Page_Load(object sender, EventArgs e)
{
TextBox1.Text = "ABC";
TextBox2.Text = "DEF";
}

すると、TextBox2.Text = "DEF";の行がコンパイルエラーになりました。
TextBox2自体をロジックのほうからは認識できないようです。

MSDNには以下のような記述があります。
「テンプレートには、HTML とマークアップを含めることができます」
これが、何を意味するのかが、いまいちピンと来ていないのですが・・・


UpdateProgress内には、静的なテキストとかイメージを配置するのが一般的で
コントロールについても配置できるが、その操作は全てJavaScriptで実施する
必要があるという事なのでしょうか?

ご存知の方がいらっしゃいましたらよろしくお願いします。
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2009-04-04 12:10
引用:
TextBox2自体をロジックのほうからは認識できないようです。

TextBox2は
(TextBox)UpdateProgress1.FindControl("TextBox2")
で参照できます。
とら
ベテラン
会議室デビュー日: 2006/10/04
投稿数: 54
投稿日時: 2009-04-07 09:36
べるさん。
回答ありがとうございます。

そうですよね。
FindControlを使用すれば出来るんですが、これは生成されたHTMLから参照する
と言う事になって、単純にTextプロパティを操作するのとは、異なる点が
引っかかってたんです。
HTML上にはIDがついたものが展開しているので、この場合だけ何故なのかと
疑問に思ったんですが・・・・
1

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