- - PR -
ListBoxでJavaScripを呼び出す方法
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-07-02 13:59
現在
開発環境:Windows XP Professional 実行環境:Windows Server 2003(IIS6.0、.Net FrameWork2.0) でWebアプリを作成しております。 asp:ListBoxコントロールのOnSelectedIndexChangedイベントで、JavaScriptを 実行する方法がわからず困っております。 例えばButtonコントロールであれば <asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="alert('test');" /> とすれば、ボタンを押した時に、「test」と画面上に表示されるのですが、 <asp:ListBox ID="ListBox1" runat="server" OnSelectedIndexChanged="alert('test');">としてコンパイルをすると、 「CS1012: 文字リテラルに文字が多すぎます。」とコンパイルエラーが起きてしまいます。 試しに、C#側で protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { ListBox1.Attributes["OnSelectedIndexChanged"] = "alert('test');"; } } としても、コンパイルは通るのですが、ListBoxのItem選択を変えても無反応です。 この件に関して、何か参考になることをご存知の方は、何でも構いませんので、 ご協力くださいませ。 | ||||
|
投稿日時: 2007-07-02 14:18
> ListBox1.Attributes["OnSelectedIndexChanged"] = "alert('test');";
ListBox1.Attributes.Add("onchange", "alert('test');"); ですか? OnSelectedIndexChangedは、サーバサイドのイベントです。 | ||||
|
投稿日時: 2007-07-02 14:22
tkrnさん、ご回答ありがとうございます。
ListBox1.Attributes.Add("onchange", "alert('test');"); でJavaScriptが実行されました。誠にありがとうございました。 | ||||
|
投稿日時: 2007-07-02 15:24
解決はされたようですが。
とりあえず、生成されたHTMLのソースを見るくらいは、しても良いのでは。 | ||||
|
投稿日時: 2007-07-03 06:36
クライアントサイドとサーバーサイドのイベントを混乱しているようですね。 HTMLコントロール、サーバーコントロールの違いとクライアント/サーバーサイドのイベントの違いをしっかり押さえた方がよろしいかと。 _________________ ASP.NET+Ajaxサンプル集 | JavaScript+Ajaxサンプル集 | ||||
|
投稿日時: 2007-07-03 12:41
mioさん書き込みありがとうございます。
>解決はされたようですが。 >とりあえず、生成されたHTMLのソースを見るくらいは、しても良いのでは。 確かにその通りですね。ご指摘ありがとうございます。 生成されたHTMLのソースを確認しましたところ、下記の通りで、 onchange="alert('test');"が追加されておりました。 ------------------------------------------------------------------------------- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head><title> 無題のページ </title></head> <body> <form name="form1" method="post" action="Default.aspx" id="form1"> <div> <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwULLTE1MDAwMjQ0MjIPZBYCAgMPZBYCAgEPEA9kFgIeCG9uY2hhbmdlBQ5hbGVydCgndGVzdCcpOw8WA2YCAQICFgMQBQVJdGVtMQUFSXRlbTFnEAUFSXRlbTIFBUl0ZW0yZxAFBUl0ZW0zBQVJdGVtM2dkZGRujmLvy8u3COEC9w0dIgyyURXy3A==" /> </div> <div> <select size="4" name="ListBox1" id="ListBox1" onchange="alert('test');"> <option value="Item1">Item1</option> <option value="Item2">Item2</option> <option value="Item3">Item3</option> </select> </div> <div> <input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWBAKstZDRDgKix/L5CwKdx/L5CwKcx/L5C4Yq+opk/fmPmtaYOwa7IvR8N9Wb" /> </div></form> </body> </html> ------------------------------------------------------------------------------- Accessさん書き込みありがとうございます。 >クライアントサイドとサーバーサイドのイベントを混乱しているようですね。 >HTMLコントロール、サーバーコントロールの違いとクライアント/サーバーサイド >のイベントの違いをしっかり押さえた方がよろしいかと。 はい、勉強します。できるだけ処理はクライアント側で行うよう、考えておりまして、 不慣れなせいか、サーバサイドとクライアントサイドの処理をごっちゃになって おりました。 皆様本当にありがとうございました。 |
1