• ベストアンサー

Buttonの処理について

aspのButtonの処理をクライアント側(javascript)だけで実行出来ますか? 出来る場合、どのような記述をすればいいでしょうか? <asp:Button ID="btnHenko" runat="server" Text="実行" OnClientClick=" btn_Click" UseSubmitBehavior="false" だけ記述したところ、サーバー側の処理が走ってしまいます。

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

その状態で作成したページを実行した時のソースを良くみてみましょう OnClick属性に"btn_Click;__doPostBack('btnHenko','');" となっているはずです btn_Clickを実行してから ___doPostBack('btnHenko','')を実行しますので サーバー側へのPostBackが発生します クライアントサイドだけの実行にとどめたいのであれば OnClientClickプロパティに return btn_Click(); と設定して ページのaspxファイルのheadタグ内などに <script type="text/javascript"> <!--   function btn_Click()   {     // 何かのクライアント側処理     return false;   }   //--> </sript> といった記述が必要です 単純にクライアント側の操作がしたいだけなら ツールボックスのHTMLタブの『Input(Button)』を使った方が確実ですよ

marukotom
質問者

お礼

ありがとうございます。 自己解決しました。 <asp:Button ID="btnHenko" runat="server" Text="実行" OnClientClick=" btn_Click();return false;" UseSubmitBehavior="false" にすれば、良かったみたいです。

関連するQ&A

  • クリックしたボタンのIDの取得

    あるプログラムをASP.NETとC#で作っています。 ASP側に、 <asp:ImageButton ID="btn1" runat="server" onclick="btn_Click" /> <asp:ImageButton ID="btn2" runat="server" onclick="btn_Click" /> <asp:Label ID="label1" runat="server" Text=""></asp:Label> とある場合に、btn1とbtn2、押された方のID名をlabel1に表示するには、btn_Clickイベントにはどう書けば良いでしょうか?

  • 無効な viewstate

    無効な viewstate 事情があり、javascriptからaspのフォームをサブミットしたいと考えています。 後述したプログラムを記述しましたが、「無効な viewstate です」といった エラーが発生します。 おそらく、javascriptから実行したsubmitが、aspのviewstateの値をサーバに 送信していない為だと思うのですが、javascriptでviewstateを取得する方法など 回避策はあるのでしょうか? <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> <script type="text/javascript"> function btn_onclick() { document.getElementById("form1").submit(); }; </script> </head> <body> <form id="form1" runat="server" action="nextpage2.aspx"> </form> <input type="button" value="test" onclick="javascript:btn_onclick();" /> </body> </html>

  • ASP.NET WEBアプリケーションで作成されたページより他の既存ペ

    ASP.NET WEBアプリケーションで作成されたページより他の既存ページへデータを投げたいと考えているのですがセキュリティ上難しいのでは?と考えています。しかし、なんとか代替案がないかと思っておりどなたかヒントをいただけないでしょうか? <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox> <asp:TextBox ID="TextBox3" runat="server" Height="72px" TextMode="MultiLine" Width="651px"></asp:TextBox> <br /> <asp:Button ID="Button1" runat="server" Text="Button" />&nbsp;&nbsp; <asp:Button ID="Button2" runat="server" Text="Button" /> <br /> <br /> <asp:Label ID="Label1" runat="server"></asp:Label> 例えばこんな簡単なaspxのページで構成されているとします。 テキストボックスに入れた値を既存のWEBページ(Yahooへのログインだとか)へ入れ込みたいのですが・・・クライアントにスクリプトで作ってとかなら余裕で出来ると思うのですがサーバサイドで仕込むことは難しいでしょうか?回避策とかもあるとなおうれしいのですが・・・よろしくお願いします。

  • FormViewのEditItemTemplateに配置したボタンへのjavascript組み込み

    はじめまして セバといいます。 VBでaspxを利用しシステムを開発していますが、 次のような現象が発生し困っています。 仕様 1.FormviewのItemTemplateに配置している「edit_Chage」ボタンで FormviewをEditmodeに変更します。 2.FormviewのEditItemTemplateには「hello」ボタンを配置し、 ボタン押下時にjavascriptを起動します。 問題点 FormviewのFormView1_ModeChangedにてイベントを拾い、 「hello」ボタンにjavascriptを組み込もうとしていますが、 この時点では「hello」ボタンのインスタンスが生成おらず、 『オブジェクト参照がオブジェクト インスタンスに設定されていません。』 のエラーになってしまいます。 サンプルプログラム /////////////////////////////// Default.aspx <%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %> <!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 runat="server"> <title>無題のページ</title> </head> <body> <form id="form1" runat="server"> <div> </div> <asp:FormView ID="FormView1" runat="server" DataSourceID="SqlDataSource1"> <EditItemTemplate> tmp1: <asp:TextBox ID="tmp1TextBox" runat="server" Text='<%# Bind("tmp1") %>' /> <asp:Button ID="Button1" runat="server" Text="hello" /> <br /> <asp:LinkButton ID="UpdateButton" runat="server" CausesValidation="True" CommandName="Update" Text="更新" /> &nbsp;<asp:LinkButton ID="UpdateCancelButton" runat="server" CausesValidation="False" CommandName="Cancel" Text="キャンセル" /> </EditItemTemplate> <InsertItemTemplate> </InsertItemTemplate> <ItemTemplate> tmp1: <asp:Label ID="tmp1Label" runat="server" Text='<%# Bind("tmp1") %>' /> <br /> <asp:Button ID="Button2" runat="server" CommandName="edit" Text="edit_Chage" /> </ItemTemplate> </asp:FormView> <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:testConnectionString %>" SelectCommand="SELECT [tmp1] FROM [tmpTBL]"> </asp:SqlDataSource> </form> </body> </html> /////////////////////////////// Default.aspx.vb Partial Class _Default Inherits System.Web.UI.Page Protected Sub FormView1_ModeChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles FormView1.ModeChanged '「Hello」ボタンへのjavascript組み込み If FormView1.CurrentMode = FormViewMode.Edit Then Dim btn As Button btn = CType(FormView1.FindControl("Button1"), Button) Dim sbScript As New System.Text.StringBuilder() sbScript.Append("alert('Hello')") btn.Attributes("onclick") = sbScript.ToString() End If End Sub End Class //////////////////////// また、 「Hello」ボタンのインスタンスを強制的に作ろうと、 Default.aspx.vbにFormView1.DataBind()を組み込みましたが、 インスタンスは生成されたものの、 onclickタグは生成されませんでした。 If FormView1.CurrentMode = FormViewMode.Edit Then Dim btn As Button FormView1.DataBind() <--- ここに追加 btn = CType(FormView1.FindControl("Button1"), Button) EditItemTemplateに配置したボタンにプログラムでjavascriptを組み込みたいのですが、 どなたか解決方法をご存知な方がいましたら、ご教示願いします。

  • EmptyDataTemplateを再表示

    EmptyDataTemplateのラベル値を画面のLinkButtonのクリック時に変更したいと思っています。 LinkButtonのクリック時に以下の通り記述することで、値はセットされているのですが、 画面上で再表示されません。 UpdatePanelでトリガーも設定しているのですが、どうすればよいでしょうか? <サーバー側> Protected Sub btnON_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnON.Click If grdList.Rows.Count = 0 Then CType(grdList.Controls(0).Controls(0).FindControl("emptyName"), Label).Text = "説明A" End If End Sub <クライアント側> <asp:LinkButton ID="btnON" runat="server"><asp:Label ID="lblON" Text="ボタン1" runat="server" /></asp:LinkButton> <div id="Data" runat="server"> <asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="Conditional"> <ContentTemplate> <asp:GridView ID="grdList" runat="server" ~省略~ > <%-- データがない場合 --%> <EmptyDataTemplate> <table > <tr> <th><asp:Label ID="emptyNo" Text="NO" runat="server" /></th> <th><asp:Label ID="emptyName" Text="説明○" runat="server" /></th>   ☆ここの値 </tr> </table> </EmptyDataTemplate> <Columns> ~データ表示省略~ </Columns> </asp:GridView> </ContentTemplate> <Triggers> <asp:AsyncPostBackTrigger ControlID="btnON" EventName="Click" /> </Triggers> </asp:UpdatePanel> </div>

  • ASP

    ASPのNETのButtonコントロールについて for文で <asp:Button ID="Button3" runat="server" onclick="SubmitBtn_Click" Text="注文する" Width="110px"/> を繰り返して複数個のボタンを作ったのですがそれぞれ個別した動作を設定できずどのボタンを押しても同じ動きしかしてくれません。なんとか別々に動作を決定することはできないんでしょうか?

  • DataGridの列幅を実行時に変更したい

    Web画面のSpreadからDataGridへ変更する対応を行っていて、 Spreadの列幅と同じ値を以下のようにテンプレート列を使用して、 ボタンやらチェックボックスやらラベルやら配置をして設定しました。 (TemplateColumnのWidthを使用するとSpreadと同じ値をいれても1/4くらいになってしまったので。) <Columns>  <asp:TemplateColumn>   <ItemTemplate>    <asp:Button id="grdButton" runat="server" Width="45"></asp:Button>   </ItemTemplate>  </asp:TemplateColumn>  <asp:TemplateColumn>   <ItemTemplate>    <asp:Button id="grdButton1" runat="server" Width="45"></asp:Button>   </ItemTemplate>  </asp:TemplateColumn> :          : しかし、実行時に条件によって見える列が変化するため 列を非表示にしたいのですが、Visibled = Falseにしてしまうと、 JavaScriptで、隠している列の値がとれないので、Width = 0にしたいのですが、 grd.Columns(col_2).HeaderStyle.Width = New Unit(0) grd.Columns(col_2).ItemStyle.Width = New Unit(0) というように記述しても列幅が0になっていません。 上記のように実現したければ、どのような手段があるでしょうか?

  • <title></title>間になぜかタブコード

    ASPを勉強中です。 WinXp SP3 + IE8 + IIS5.1 + VS2010 で勉強しています。 以下の記述を行っているのですが、なぜか<title>~</title>の間にタブコードが挿入されてしまいます。 マスターページのヘッダ部分は <head runat="server"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <meta http-equiv="Content-Script-Type" content="text/javascript" /> <meta http-equiv="Content-Style-Type" content="text/css" /> <asp:ContentPlaceHolder ID="IncludeContent" runat="server" /> <script src="<% =ResolveUrl("~/Scripts/jquery-1.4.1.min.js") %>" type="text/javascript"></script> <script src="<% =ResolveUrl("~/Scripts/MicrosoftAjax.js") %>" type="text/javascript"></script> <script src="<% =ResolveUrl("~/Scripts/MicrosoftMvcAjax.js") %>" type="text/javascript"></script> <title><asp:ContentPlaceHolder ID="TitleContent" runat="server" /></title> </head> 実際のASPページの記述は <asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">XX</asp:Content> と記述しているのですが、実際の出力時にはなぜか <title> \tXX </title> と XX の手前にタブコード(\t)が生成されてしまいます。 これを何とか削除したいのですが・・・・ 何か記述を間違えていますか?

  • ブラウザーからサーバ側のaspファイルを読み込む方法について

    クライアント側のVBscriptやJavaScriptなどのスクリプト 言語から画面を遷移しないでプログラム内でaspファイルを 呼びサーバ側での処理をした後にまたその後のプログラム を実行するような処理をしたいのですがどのように記述し たらよいのでしょうか? (クライアントのプログラム内でサーバ側のaspファイルの 関数を呼び処理の結果をクライアントのスクリプト言語に 反映させたいのですが。。。)

  • ボタンの配置

    初心者の問題ですが。。 ページの中央にボタン配置したいときはどのタグ使うでしょうか。 <asp:Button id="cmdSubmit" style="Z-INDEX: 105; LEFT: 100px; POSITION: absolute; TOP: 400px"runat="server" Text="送信" Width="128px"></asp:Button> <asp:Button id="cmdCancel" style="Z-INDEX: 106; LEFT: 350px; POSITION: absolute; TOP: 400px"runat="server" Text="キャンセル" Width="128px"></asp:Button> LEFTのところcenterに変えてみたんですがだめでした。。。 教えてください。 よろしくお願いします。

専門家に質問してみよう