2012-03-23 33 views
13

Tôi có một biểu mẫu mà người dùng có thể xóa bản ghi và tôi muốn thông báo bật lên nơi người dùng phải nhấp vào OK để xác nhận xóa.ASP.NET xác nhận trước khi thực hiện codebehind

nút Delete: chức năng

<asp:Button ID="btnDelete" runat="server" Text="Delete" UseSubmitBehavior="false" OnClick="btnDelete_Click" OnClientClick="confirmation();" /> 

xác nhận:

function confirmation() { 
     var answer = confirm("Are you sure you want to delete? This action cannot be undone.") 
    } 

Vì vậy, ngay bây giờ, nhấn nút delete thực hiện Tiểu btnDelete_Click trong mã đằng sau bất kể bạn nhấp ổn hoặc hủy trong bật lên hộp. Tôi biết tôi có thể thêm nếu (câu trả lời) {- một số mã ở đây -} trong chức năng javascript của tôi, nhưng nó có thể sử dụng javascript để thực thi mã từ codebehind? Hay có cách nào khác để làm điều này?

+2

Chỉ cần trả về false khi người dùng nhấp hủy và đúng khi nhấp chuột ok. Kiểm tra câu trả lời bằng cách: Thit Lwin Oo –

Trả lời

30

Hãy thử như sau. Bạn phải trả lại kết quả của hàm xác nhận (đúng hoặc sai).

<asp:Button 
    ID="btnDelete" 
    runat="server" 
    Text="Delete" 
    UseSubmitBehavior="false" 
    OnClick="btnDelete_Click" 
    OnClientClick="return confirmation();" /> 

 

function confirmation() { 
    return confirm("Are you sure you want to delete?"); 
} 
+16

Bạn chỉ có thể 'return confirm (...)' – Esailija

+0

Không hoạt động, vẫn thực thi sub btnDelete_Click trong mã phía sau ... – Sara

+1

@Sara nó sẽ hoạt động. Tôi đã gặp vấn đề này và vấn đề là OnClientClick = "return JSFunction();" và hàm JSFunction đó trả về true hoặc false. Nếu sai, nó sẽ không đăng lại. Vui lòng thử lại. –

-2

Nếu bạn muốn javascript để phương pháp truy cập trong mã phía sau bạn luôn có thể phơi bày chúng trong một dịch vụ RESTful.

$.ajax({ 
    url: 'url to the rest call', 
    success: successfuntion(), 
    dataType: 'text/json' 
}); 

Gọi hàm REST làm bất kỳ logic nào bạn cần và gửi lại một số dữ liệu để cho biết thành công. Sau đó, chỉ cần sử dụng hàm successfunction để loại bỏ phần tử khỏi DOM.

0

Nếu bạn muốn thực hiện một số mã ở phía máy chủ mà không thực sự tạo lại bài đăng, bạn phải sử dụng ajax để làm điều đó.

function confirmation() { 
     var answer = confirm("Are you sure you want to delete? This action cannot be undone.") 
     if(answer) 
     { 
      $.post("ajaxserverpage.aspx?item=34",function(data){ 
       alert(data); 
      }); 
     } 
     return false; 
    } 

và có một trang gọi là ajaxserverpage.aspx và tải trang của trang đó, kiểm tra các chuỗi truy vấn và thực thi mã phía máy chủ có liên quan của bạn và gửi lại một số chuỗi

protected void Page_Load(object sender, EventArgs e) 
    { 
     if (Request.QueryString["item"] != null) 
     { 
      // read the item and do your stuff here 
     Response.Write("Deleted succssfully"); 
     Response.End(); 
     } 
    } 

Bạn cũng có thể sử dụng generic handler (.ashx) để xử lý phía máy chủ ajax thay vì tệp .aspx. Tôi thích phương pháp này.

4

xin vui lòng sử dụng mẫu này:

<asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="return ConfirmOnDelete();"/> 

<script type="text/javascript">  
    function ConfirmOnDelete() { 
    if (confirm("Do you really want to delete?") == true) 
     return true; 
    else 
     return false; 
    } 
</script> 
9

Đặt này trong mã aspx của bạn :

OnClientClick="return confirm('Are you sure you want to delete this project?');" 
3

Chúng tôi có thể dễ dàng thực hiện việc này bằng cách sử dụng ConfirmButtonExtend er,

<ajaxToolkit:ConfirmButtonExtender ID="cbeDelete" TargetControlID="btnDelete" ConfirmText="Are you sure you want to delete? This action cannot be undone." runat="server"> 

của nó rất đơn giản ...

0

Tôi nghĩ trên nên có tác dụng nếu bạn không thể sử dụng nó với Button, Thử <asp:link button>. Mỏ hoạt động tốt.

ASPX page: -

<asp:LinkButton ID="takeActionBtn" CausesValidation="false" runat="server" 
     onclientclick="return confirm('Do you really want to perform Action ?');"> Take Action </asp:LinkButton> 

VB máy chủ codebehind: -

Protected Sub takeActionBtn_Click(ByVal sender As Object, ByVal e As EventArgs) Handles takeActionBtn.Click 

End Sub 

Một điều tôi lưu ý là nếu bạn đang sử dụng điều khiển (ascx) trong một trang web mà bạn có thể cần phải tắt/bật ở trang hoặc cấp kiểm soát AutoEventWireup="false" <%@ control in <%@ page

Chúc may mắn !!

0

1) Form Design

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<title></title> 
<script type = "text/javascript"> 
    function Confirm() { 
     var confirm_value = document.createElement("INPUT"); 
     confirm_value.type = "hidden"; 
     confirm_value.name = "confirm_value"; 
     if (confirm("Do you want to save data?")) { 
      confirm_value.value = "Yes"; 
     } else { 
      confirm_value.value = "No"; 
     } 
     document.forms[0].appendChild(confirm_value); 
    } 
</script> 
</head> 
<body> 
<form id="form1" runat="server"> 
    <asp:Button ID="btnConfirm" runat="server" 
OnClick = "OnConfirm" Text ="Raise Confirm" OnClientClick = "Confirm()"/> 
</form> 
</body> 
</html> 

2) codebehind

public void OnConfirm(object sender, EventArgs e) 
{ 
string confirmValue = Request.Form["confirm_value"]; 
if (confirmValue == "Yes") 
{ 
this.Page.ClientScript.RegisterStartupScript(this.GetType(),"alert('You clicked YES!')", true); 
} 
else 
{ 
    this.Page.ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert('You clicked NO!')", true); 
} 
} 

3) Khi bạn nhấp vào xóa hộp xác nhận nút sẽ được hiển thị.

4) Nếu bạn bấm ok sau đó một phần OK sẽ làm việc trong mã khác Không Phần

5) Các phương pháp tương tự trong GridView DELETE BUTTON.

3

Tôi biết đây là bài đăng cũ, nhưng bạn có thể đặt các câu trả lời ở trên vào một dòng như thế này. Và bạn thậm chí không cần phải viết hàm.

<asp:Button runat="server" ID="btnDelete" Text="Delete" OnClick="btnDelete_Click" OnClientClick="if (!confirm('Are you sure you want to delete ? ')) return false;" /> 
+1

Đơn giản nhưng thanh lịch, điều này cũng phù hợp với tôi. Và ít mã hơn một số giải pháp khác. –

0

Bạn chỉ có thể đặt:

onclientclick = "return (window.confirm('text message')); 

trong trang ASPX, nó làm điều tương tự.

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