- PR -

WebフォームからユーザーコントロールにJavaScriptを埋め込む方法

1
投稿者投稿内容
ミハエル
会議室デビュー日: 2005/06/24
投稿数: 2
投稿日時: 2005-07-04 14:56
いつもお世話になっております。

【開発環境】
・Windows2000Server
・IIS5.0
・ASP.NET(C#)
・ブラウザ:IE6.0
・開発ツール:ASP.NET WebMatrix

Webフォームの中にユーザーコントロールを配置しています。ユーザーコントロール内には2つのTextBox

<asp:TextBox id="txtDATA01" runat="server"></asp:TextBox>
<asp:TextBox id="txtDATA02" runat="server"></asp:TextBox>

があります。
Webフォームからユーザーコントロール内のTextBox 「txtDATA02」 に対して onChange="alert('メッセージ');" というようなJavaScriptを埋め込みたいのですが方法がわかりません。

どなたか教えていただけないでしょうか?
宜しくお願いいたします。

[ メッセージ編集済み 編集者: ミハエル 編集日時 2005-07-04 14:58 ]
にしざき
ぬし
会議室デビュー日: 2003/06/30
投稿数: 304
投稿日時: 2005-07-04 15:54
・ユーザコントロールにメソッド(あるいはプロパティ)を追加する。
・ここから、内部の TextBox の属性を操作する。
・フォームからは上記メソッドを呼ぶ(あるいはプロパティに値を設定する)。

せっかくユーザコントロールにして内部をカプセル化したのに、
直接内部のコントロールを参照するのはオススメできないので。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2005-07-04 21:42
引用:

Webフォームからユーザーコントロール内のTextBox 「txtDATA02」 に対して onChange="alert('メッセージ');" というようなJavaScriptを埋め込みたいのですが方法がわかりません。


 現状、どの様にしようとして、どうなっているのでしょうか?それを出しておく方が、早く解決できると思いますよ。

 とりあえず、.ascx.csファイルを開いて、protected(またはinternal)で宣言されている、txtDATA01とtxtDATA02の宣言を、publicにします。これでインテリセンスから見えるようになりますが、あまりお勧めしません。


 おそらく、アラートで出力するメッセージを変更するだけで、イベントの中身まで変更する必要はないですよね?であれば、そのユーザーコントロールに対してChangingAlertMessageプロパティを追加すればいいでしょう。
コード:
// 直打ち未検証
public string ChangingAlertMessage {
	get {
		return changingAlertMessage;
	}
	set {
		if (value == null || value.length == 0) {
			txtDATA01.Attribute.Remove("onChange");
			changingAlertMessage = string.Empty;
		} else {
			changingAlertMessage = value;
			txtDATA01.Attribute["onChange"]
				= "alert('" + value + "');";
		}
	}
}



_________________
ミハエル
会議室デビュー日: 2005/06/24
投稿数: 2
投稿日時: 2005-07-05 09:34
皆様返答ありがとうございます。

皆様のご意見を参考にユーザーコントロールにプロパティを追加して対応しようと思います。
結果は後程ご報告いたします。
1

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