Tôi cần nắm bắt sự kiện bấm 'Cập nhật' với jQuery trong GridView asp.net và không biết cách bắt đầu từ đâu. Tôi vẫn còn khá mới với jQuery. GridView của tôi được gắn vào một SQLDataSource và, tự nhiên, có tất cả các chuông và còi mà sự kết hợp đó chi phối. Mọi sự trợ giúp sẽ rất được trân trọng.Cách chụp sự kiện bấm 'Cập nhật' trong ASP.NET GridView với jQuery
Trả lời
Chỉ cần thêm khối tập lệnh vào bất kỳ nơi nào sau khi GridView được khai báo và nó sẽ hoạt động với cột GridView không được tạo mẫu mặc định. Không có mã trong codebehind vì nó hoàn toàn là một giải pháp Javascript.
Sử dụng này nếu bạn đang sử dụng một liên kết kiểu GridView cột:
<script type="text/javascript">
// a:contains(The text of the link here)
$('#<%= theGridViewID.ClientID %> a:contains(Update)').click(function() {
alert('Update click event captured from the link!');
// return false: stop the postback from happening
// return true or don't return anything: continue with the postback
});
</script>
Sử dụng này nếu bạn đang sử dụng một cột GridView Nút-type và bạn không muốn Javascript của bạn để ngăn chặn các postback:
<script type="text/javascript">
// :button[value=The text of the button here]
$('#<%= theGridViewID.ClientID %> :button[value=Update]').click(function() {
alert('Update click event captured from the button!');
});
</script>
sử dụng này nếu bạn đang sử dụng một cột GridView nút-type và bạn muốn có quyền kiểm soát xem có nên tiếp tục với postback hay không:
<script type="text/javascript">
// :button[value=The text of the button here]
var updateButtons = $('#<%= theGridViewID.ClientID %> :button[value=Update]');
updateButtons
.attr('onclick', null)
.click(function() {
alert('Update click event captured from the button!');
var doPostBack = true; // decide whether to do postback or not
if (doPostBack) {
var index = updateButtons.index($(this));
// 'Update$' refers to the GridView command name + dollar sign
__doPostBack('<%= theGridViewID.UniqueID %>', 'Update$' + index);
}
});
</script>
Cập nhật: Tôi nghĩ rằng đây sẽ là một giải pháp tốt hơn để thay thế của (3) khối kịch bản cuối cùng tôi đã trình bày ở trên, vì bạn sẽ không cần phải cập nhật chức năng __doPostBack gọi bằng tay dựa trên tên lệnh và như vậy, nó sẽ ít bị lỗi hơn:
<script type="text/javascript">
// :button[value=The text of the button here]
var updateButtons = $('#<%= theGridViewID.ClientID %> :button[value=Update]');
updateButtons.each(function() {
var onclick = $(this).attr('onclick');
$(this).attr('onclick', null).click(function() {
alert('Update click event captured from the button!');
var doPostBack = true; // decide whether to do postback or not
if (doPostBack) {
onclick();
}
});
});
</script>
Tín dụng cho Aristos cho ý tưởng này. :)
Tôi nói rằng khối script nên được đặt ở đâu đó sau khi GridView được khai báo, nhưng nếu vì lý do nào bạn nhấn mạnh nó xuất hiện ở đâu đó trước đây (trong phần đầu?), Bạn luôn có thể bọc kịch bản với $ (function() {/* scripts tại đây * /}) sao cho tập lệnh sẽ chỉ được thực thi sau khi DOM sẵn sàng. – Amry
Tôi thích công việc của bạn. Công bằng duy nhất của tôi là bạn thực sự cố gắng tạo lại doPostBack - có cách nào để có được những gì thực sự tồn tại trên sự kiểm soát trong sự kiện OnClick hay không, trước khi thay đổi nó, lưu nó vào một biến chức năng và gọi nó sau khi làm việc. – Aristos
@ Aristos: Đề xuất tốt thực sự. Lạ lùng tôi bằng cách nào đó không bao giờ nghĩ về điều đó. Cập nhật câu trả lời của tôi để bao gồm điều này, tín dụng cho bạn. :) – Amry
Bạn cần đính kèm trình xử lý sự kiện phía máy khách vào sự kiện nhấp chuột của nút Cập nhật [liên kết]. Tôi không nghĩ rằng nó có thể được thực hiện bằng cách sử dụng AutoGenerateEditButton = "true" nếu bạn đang làm theo cách đó. Bạn sẽ cần phải sử dụng một TemplateField để bạn có thể thao tác nút. Sau đó, bạn có thể sử dụng jQuery để liên kết với sự kiện nhấp chuột của nút.
Thêm cột cập nhật vào mẫu cột. Chuyển đổi nó thành cột tùy chỉnh và sửa đổi nó theo cách bạn có thể móc vào nó bằng jquery, ví dụ như thêm một lớp css vào nó.
Ok đây là giải pháp của tôi để chỉ chụp một bản cập nhật (hoặc nhiều hơn) từ một nút.
Đây là mã javascript mà tôi chạy vào cập nhật nhấp chuột
<script type="text/javascript">
function NowRunTheUpdate(){
alert("ok I capture you");
}
</script>
và đây là mã trang
`<asp:GridView ID="MyGridView" runat="server" OnRowDataBound="MyGridView_RowDataBound" ... >`
<asp:ButtonField Text="update" CommandName="Update" ButtonType="Button" />
...
Đây là mã Thats chạy phía sau và thiết lập các javascript.
protected void MyGridView_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
// loop all data rows
foreach (DataControlFieldCell cell in e.Row.Cells)
{
// check all cells in one row
foreach (Control control in cell.Controls)
{
// I go to get the button if exist
Button button = control as Button;
if (button != null && button.CommandName == "Update")
// Add delete confirmation
button.OnClientClick = "NowRunTheUpdate();";
}
}
}
}
Gridview không là gì ngoài một bảng có nhiều "tr" và "td". Nếu bạn hiểu khái niệm đó thì bạn sẽ dễ dàng xử lý mọi thứ ở phía khách hàng. Nếu bạn đã bật tự động mọi thứ thì đó sẽ là một liên kết dẫn đến Chỉnh sửa, Xóa, Cập nhật hoặc Hủy (Kiểm tra Xem Nguồn).Mã đưa ra dưới đây nên nắm bắt sự kiện cập nhật nhấp chuột:
$("a:contains(Update)").live("click", function() {
//alert("hi"); do what needs to be done
return false;//would not sent the control back to server
});
HTH
@Raja Tôi thích ý tưởng này - cần một số công việc trong trường hợp bạn có nhiều lưới và chắc chắn không xung đột với các nút cập nhật khác nhưng tôi thích nó. Ngoài ra bạn cần jQuery nhưng tôi sử dụng nó anyway. Và phần tốt hơn từ ý tưởng của tôi là bạn không cần phải lặp lại lưới trên code-behind. Tôi sẽ thử kiểm tra nó và có thể sử dụng nó. – Aristos
@Raja Tôi kiểm tra ngay bây giờ mã và tôi nghĩ rằng nó cần một cái gì đó nhiều hơn - nếu bạn có thể giúp đỡ về điều đó. Đây không phải là liên kết nhưng đầu vào, và sau đó đầu vào làm cho postBack onClick. Làm thế nào bạn có thể nắm bắt và lưu postBack rằng tất cả đã sẵn sàng tồn tại bên trong đầu vào (bằng cách sử dụng jQuery? – Aristos
@Raja đây là mã mà bạn cần để chèn OnLick của bạn.Bạn có thể giúp? – Aristos
- 1. jQuery: cách chụp phím bấm bằng live()
- 2. sự kiện bấm nút hình ảnh asp với JQuery Mobile
- 3. C# - ASP.NET Nút bấm sự kiện không hoạt động
- 4. jquery bấm phím() sự kiện nhận được văn bản
- 5. Cập nhật sự kiện trong Outlook 2007 bằng tệp iCalendar
- 6. Cách chụp phím bấm Enter trong GtkEntry
- 7. Các sự kiện của hộp kiểm Jquery Jstree chụp
- 8. kiểm tra nhibernate với các sự kiện cập nhật
- 9. Các sự kiện Jquery .bind được kích hoạt khi chụp sự kiện hoặc bong bóng sự kiện
- 10. ASP.NET Gridview với Hộp thoại Di động JQuery
- 11. Sự kiện JS loại bỏ cho bất kỳ cập nhật bản cập nhật nào của viewmodel
- 12. ASP.NET - Nút sự kiện nhấp chuột đưa ra sau khi GridView ràng buộc
- 13. Cách chụp sự kiện In trong Outlook Add-in?
- 14. Chọn hộp kiểm asp.net gridview
- 15. Sử dụng Bootstrap tablesorter với ASP.NET GridView
- 16. chụp LinearLayout onClick sự kiện với ImageButton bên trong nó
- 17. Chụp các sự kiện KeyDown trong UserControl
- 18. Chụp sự kiện khi đóng trình duyệt
- 19. Bảng cập nhật ASP.NET ngừng hoạt động jquery từ khi đang hoạt động
- 20. Chụp sự kiện "cuộn xuống"?
- 21. Điều khiển JQuery GridView
- 22. Chuỗi sự kiện được kích hoạt trong điều khiển asp.net GridView là gì?
- 23. Có sự kiện cập nhật tiến trình nào trong jQuery ajax không?
- 24. GridView RowCommand sự kiện không bắn
- 25. sự kiện ondragstart với jQuery
- 26. Sự khác nhau giữa "Cập nhật ảnh chụp nhanh" và "Cập nhật phụ thuộc" trong m2eclipse là gì?
- 27. Sự kiện bấm nút ASP.NET không kích hoạt trong kiểu khởi động
- 28. Sự kiện bấm nút cho widget android
- 29. Vấn đề với sự kiện nhấn nút trong jquery
- 30. Tắt một sự kiện bấm nút động asp.net trong khi đăng lại và bật sau
"Cập nhật" mà người dùng sẽ bấm là gì - nó là một nút, một liên kết, hay cái gì khác? –