Attributesプロパティを利用すると、WebコントロールがHTMLとしてレンダリングされる際に属性を追加することができます。
これを利用すると、次のサンプルのようにクライアント側で動作するスクリプトを追加することが可能です。
-------------------------------------------------------
<%@ Page Language="C#" %>
<html>
<head>
<script runat="server">
public void Page_Load(Object sender, EventArgs e) {
Button1.Attributes["onclick"]="return window.confirm('登録していいですか?');";
}
void button_Click(Object sender, EventArgs e)
{
Message.Text=intxt.Text + "が登録されました。";
}
</script>
</head>
<body>
<form runat="server">
<asp:Textbox id="intxt" runat="server"/><br />
<asp:button id="Button1" Text="登録" OnClick="button_Click" runat="server" />
</form>
<asp:label id="Message" runat="server"/>
</body>
</html>
-------------------------------------------------------
ここでは入力したデータを登録してよいかどうかの確認ウィンドウを表示させています。
ASP.NETでは、クライアント側のスクリプトを追加するために、
・サブミット時の処理を登録するRegisterOnSubmitStatementメソッド
・ページが表示されたときに実行される処理を登録するRegisterStartupScriptメソッド
・その他、スクリプトをブロックとして登録するRegisterClientScriptBlockメソッド
が用意されています。
1行程度のスクリプトならともかく、クライアント側にそれなりの処理をさせようという場合は、これらのメソッドを利用すべきでしょう。
RegisterOnSubmitStatementメソッドを利用して確認ウィンドウを表示するサンプルは次のようになります。
-------------------------------------------------------
<%@ Page Language="C#" %>
<html>
<head>
<script runat="server">
public void Page_Load(Object sender, EventArgs e) {
RegisterOnSubmitStatement("submit", "return window.confirm('登録していいですか?');");
if(IsPostBack)
Message.Text=intxt.Text + "が登録されました。";
}
</script>
</head>
<body>
<form runat="server">
<asp:Textbox id="intxt" runat="server"/><br />
<asp:button Text="登録" runat="server" />
</form>
<asp:label id="Message" runat="server"/>
</body>
</html>
-------------------------------------------------------
あおい情報システム株式会社 小野修司(どっとねっとふぁん)