2012-11-13 61 views
6

Tôi đã làm việc trên một trang web trong VB.NET và JQM - và tất cả đã được OK.sự kiện bấm nút hình ảnh asp với JQuery Mobile

Bây giờ, tôi đang cố gắng để bao gồm một nút hình ảnh tiêu chuẩn sử dụng một thẻ như:

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

và trong mã VB đằng sau tập tin có một sự kiện nhấp chuột tương tự như sau:

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

Khi tôi nhấp vào nút Hình ảnh và theo dõi mã - tất cả mã trong các sự kiện trang trong mã phía sau tệp tin (tải trang, hiển thị trang, v.v.) - nhưng sự kiện nhấp cho nút hình ảnh không bao giờ kích hoạt.

Nếu tôi thay nút Hình ảnh bằng phím asp chuẩn: Nút và thực hiện tương tự - sau đó sự kiện nhấp trong mã phía sau đám cháy chỉ là tốt! Có thể không sử dụng ASP ImageButton trong một trang JQM và giữ một sự kiện nhấp chuột trong Mã VB phía sau tệp không?

EDIT Ok nhiều đánh giá cao để andleer cho câu trả lời của mình - nhưng nó mang một kịch bản mới (vấn đề) với trang web của tôi với ánh sáng, cũng liên quan đến những ImageButtons.

Tôi có các điều khiển ImageButton chứa trong điều khiển người dùng. Trang của tôi là một tệp ASPX duy nhất có nhiều chi tiết <div data-role="page"> elemen trong đó, mỗi ID có ID riêng ("page1", "page2", "page3", v.v.) - theo tiêu chuẩn sử dụng chức năng nhiều trang của JQM. Mỗi "trang" phần chứa một thể hiện của điều khiển người dùng có chứa các nút hình ảnh. Tất cả đều hoạt động tốt, với một vấn đề - khi người dùng điều hướng khỏi "page1" mặc định sang bất kỳ trang "" nào khác và nhấp vào một trong các nút hình ảnh, mã sẽ kích hoạt, trang tải lại - và đưa người dùng trở lại mặc định trang - "page1".

Điều này là không tốt - tôi cần một cách để cho phép người dùng kích hoạt nút và tải lại trang và ở trên phần tử "trang" mà họ đang xem - JQM hoàn thành nhiều trang này bằng cách sử dụng thẻ băm trong URL - tôi tìm thấy một dòng mã mà tôi thêm vào sự kiện của trang tải mà đọc:

'Protected Sub Page_Load (ByVal người gửi Như Object, ByVal e Như System.EventArgs) Xử lý Me.Load

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

End Sub` 

tôi ban đầu sử dụng các nút radio trên điều khiển người dùng của tôi - mà JQM là "skinning" để chúng xuất hiện dưới dạng các nút - và với dòng này trong sự kiện Page_Load, một người dùng c hãy nhấp vào nút radio trên bất kỳ phần tử "trang" nào và mã đằng sau nút radio sẽ kích hoạt và trang sẽ tải lại với người dùng trên cùng một phần tử "trang" mà họ đã nhấp vào - chứ không phải thay thế nút radio bằng Nút Ảnh - khi tôi thêm dòng mã đó vào sự kiện Page_Load, các điều khiển ImageButton hoàn toàn ngừng hoạt động - khi tôi nhấp vào mã trong nhấp chuột của chúng ngay cả trong mã phía sau không kích hoạt - cũng như không thực hiện bất kỳ sự kiện cấp trang nào như Page_Load hoặc Page_PreRender - nhấp vào chúng bây giờ hoàn toàn không có gì ....

Bất kỳ suy nghĩ nào về điều này?

Trả lời

0

Sự cố là số <asp:ImageButton /> hiển thị dưới dạng <input type="image" /> bị ẩn bởi jQuery Mobile. Thêm một data-role = "none" vào ImageButton của bạn, điều này sẽ khiến jQuery Mobile trả về điều khiển.

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

Tôi đánh giá cao phản hồi của bạn - Tôi có một chút khác biệt mà tôi sẽ đăng trong thư trả lời - vì nó quá dài để nhận xét .... – Brian

1

Một câu trả lời mới để giải quyết phần thứ hai của câu hỏi của bạn:

Tôi đã tìm thấy rằng các hình thức asp.net web chỉ đơn giản không hoạt động với jQuery Mobile kịch bản đa trang. Biểu mẫu web yêu cầu tất cả các điều khiển web phải nằm trong một phần tử <form /> đơn lẻ cần phải mở rộng tất cả các trang jQuery Mobile ("ảo"). Đây là xung đột trực tiếp với nhu cầu của jQuery Mobile để có các thành phần <form /> trong mỗi trang phụ để hiển thị và gói bưu chính xác.

Hãy xem xét MVC thay thế.

+0

Thật không may khi chuyển sang MVC tại thời điểm này là hết câu hỏi:/Sự cố sau này chuyển hướng đến phần tử "trang" không chính xác của tài liệu nhiều trang là một trong những vấn đề cuối cùng cần giải quyết trước khi chúng tôi trình bày điều này - và nó cần được trình bày trong tuần! Với toàn bộ việc làm trong các biểu mẫu Web - và cơ sở tri thức của riêng tôi ở dạng web - tôi phải tìm cách để làm điều này xảy ra ở đây - tôi rất thích nhìn vào MVC xuống con đường ... – Brian

+0

số lượng thời gian cố gắng để có được một mẫu nhiều trang jqm làm việc trong các hình thức web asp.net và cuối cùng đã từ bỏ ý tưởng. Vấn đề phần tử biểu mẫu mà tôi mô tả ở trên không thể khắc phục được. Vấn đề tương tự xảy ra với bất kỳ ajax nào đã bật tải DOM. Hy vọng duy nhất của bạn để có được điều này làm việc trong các trang web asp.net nó để tắt tất cả tải ajax để đi với các mẫu trang duy nhất. Tôi có thể sai nhưng tôi không thể khắc phục vấn đề/giới hạn này. – andleer

+0

Tôi đánh giá cao sự giúp đỡ của bạn! Tôi đã quản lý để có được một cái gì đó làm việc bằng cách sử dụng một lĩnh vực ẩn mà javascript nạp với các thẻ băm trang trên nút bấm, và sau đó một javascript nối thêm vào url khi tải - nhưng nó chỉ có vẻ giống như một giải pháp "hoaky" có thể dẫn đến rắc rối sau này - vì vậy tôi đang làm việc trên các trang trang đơn ngay bây giờ để xem liệu tôi có thể làm điều đó để hoạt động tốt hơn không. – Brian

Các vấn đề liên quan