2012-11-13 26 views
6

私はVB.NETとJQMのサイトで作業しています。asp画像ボタンクリックイベントJQuery Mobile

今、私は、次のようなタグを使用して、標準的なイメージのボタンを含めるしようとしています:

<asp:ImageButton ID="btnYear" runat="server" ImageUrl="~/images/buttons/year_btn.gif" /> 

と、ファイルの後ろのVBコードに次のようなクリックイベントがあります:

Private Sub btnYear_Click(sender As Object, e As System.Web.UI.ImageClickEventArgs) Handles btnYear.Click  
    Session("TimeFrame") = "YEAR"  
    *do other code* 
End Sub 

イメージボタンをクリックしてコードをトレースすると、コードビハインドファイルのページイベント(ページロード、ページプリレンダリングなど)のすべてのコードが表示されますが、画像ボタンのクリックイベントは発生しません。

Imageボタンを標準のasp:Buttonに置き換えて同じようにすると、コード内のclickイベントが正常に起動します。 JQMページ内でASP ImageButtonを使用し、VBコードビハインドファイルでクリックイベントを保持することはできませんか?

EDIT彼の応答をandleerする [OK]を非常に感謝 - それはまた、これらのImageButtonsに関して、光に私のページで新しいシナリオ(問題)をもたらします。

ImageButtonコントロールは、ユーザーコントロール内に含まれています。私のページは、JQMの複数ページ機能の標準的な使い方に従って、複数の <div data-role="page"> elemenstを持つ単一のASPXファイルであり、それぞれ独自のID( "page1"、 "page2"、 "page3"など)を持ちます。各 "ページ"セクションには、イメージボタンを含むユーザーコントロールのインスタンスが含まれています。これはうまくいきます。ユーザーがデフォルトの「page1」から他の「page」に移動して画像ボタンの1つをクリックすると、コードが実行され、ページがリロードされ、ユーザーがデフォルトに戻りますページ - "page1"。

これはいいことではありません - ユーザーがボタンを押してページを再読み込みし、閲覧していた「ページ」要素にとどまることができるようにする必要がありました.JQMはURLにハッシュタグを使用してこれらの複数のページを実行しますMe.Load

`保護されたサブをPage_Load(オブジェクトとしてByVal送信者、System.EventArgsとしてByVal e)のハンドル

Me.Form.Attributes("onsubmit") = "this.action+=top.location.hash;" 

End Sub` 

I:私は、私が読んページのLoadイベントに追加されたコードの行を見つけましたもともと私のユーザコントロールのラジオボタンを使用していました.JQMはボタンとして表示されるように「スキニング」されていました。Page_Loadイベントのこの1行で、ユーザc ould "page"要素のラジオボタンをクリックすると、ラジオボタンの背後にあるコードが起動し、クリックされたのと同じ "ページ"要素にページがリロードされます。ラジオボタンをImage Buttonsに置き換えない - そのコード行をPage_Loadイベントに追加すると、ImageButtonコントロールは完全に機能しなくなります。つまり、コードビハインドでもクリックしてコードをクリックしても、Page_LoadやPage_Loadなどのページレベルイベントは実行されません。 Page_PreRender - ここをクリックすると、まったく何もできません....

これについてのご意見はありますか?

答えて

0

問題は<asp:ImageButton /><input type="image" />としてレンダリングされ、jQuery Mobileによって隠されています。 data-role = "none"をImageButtonに追加すると、jQuery Mobileはコントロールをそのままレンダリングします。

<asp:ImageButton id="MyButton" runat="server" data-role="none" /> 
+0

私はあなたの応答を感謝します - 私は返信で投稿する少し違った捻れを持っています - それはコメントのために少し長すぎるので.... – Brian

1

あなたの質問の後半部分に対処するために、新しい答え:

はasp.netのWebフォームは、単にjQueryのモバイルマルチページのシナリオでは動作しないことを私が発見しました。 Webフォームでは、すべてのWebコントロールが、すべてのjQuery Mobile(「仮想」)ページにまたがる必要がある単一の要素内に存在する必要があります。これは、適切なレンダリングとポストパックのために、各サブページ内に<form />要素を持つjQuery Mobileの必要性と直接対立しています。

代わりにMVCを検討してください。

+0

残念ながら、この時点でMVCに切り替えるのは外です質問:/複数ページ文書の間違った "ページ"要素にリダイレクトされるこのポストバックの問題は、私たちがこれを提示する前に解決すべき最後の問題の1つであり、その週内に提示する必要があります! Webフォームで作業していることと私自身の知識ベースがWebフォームになっているので、ここでこれを実現する方法を見つけなければなりません。私は道路の下でMVCを調べるのが大好きです。 – Brian

+0

私は大きなasp.net Webフォーム内で動作するjqm複数ページテンプレートを取得しようとすると、結局そのアイデアをあきらめてしまいました。私が上で説明したフォーム要素の問題は克服できません。同じ問題は、DOMロードが有効なajaxで発生します。 asp.net web内でこの作業を行う唯一の希望は、すべてのAJAXの読み込みをオフにして単一ページのテンプレートにすることです。 私は間違っているかもしれませんが、私はこの問題/限界を克服できませんでした。 – andleer

+0

私はあなたの助けに感謝します!私は、javascriptがボタンのクリックでページのハッシュタグをロードした隠しフィールドを使用して何かを稼働させました。そして、ロードするときにURLにそれを追加したjavascriptがあります - しかし、ちょうど "ホッケー"後でトラブルにつながるので、今私はそれをよりうまく動作させることができるかどうかを知るために、単一ページのページに取り組んでいます。 – Brian

関連する問題