2016-01-14 62 views
2

我正在使用基於ASP.NET的WebForms應用程序,並使用C#編碼。此應用程序執行CRUD操作,並且每次用戶想要執行操作時都需要向客戶端顯示確認消息。我決定創建一個jQuery函數,它接收窗口的標題,顯示給用戶的消息和表示動作的按鈕。JQuery模式對話框確認不會顯示給用戶

這是我的javascript功能:

var _confirm = false; 
function Confirm(str, strtitle,button) { 
    e.preventDefault(); 
    if (!strtitle) strtitle = 'Mensaje de error'; 
    $('#dialog').show(); 
    $('#dialog').html(str); 

    $("#dialog").dialog({ 
    autoOpen: true, 
    draggable: false, 
    resizable: false, 
    modal: true, 
    title: strtitle, 
    width: 350, 
    height: 180, 
    show: "slide", 
    hide: "puff", 

    buttons: { 
     "No": function() { 
     jQuery(this).dialog("close"); 
     }, 

     "Yes": function() { 
     jQuery(this).dialog("close"); 
     _confirm = true; 
     button.click(); 
     } 
    }, 

    close: function() { 
     jQuery(this).remove(); 
    } 
    }); 
    return false; 
} 

這是ASP按鈕:

<asp:button id="btnOk" onclick="btnDGV_Click" 
      onclientclick="Confirm('Desea eliminar el registro', 'Confirmacion', this);" 
      runat="server" text="Eliminar Registro"> 
</asp:button> 

的onclick在服務器端事件的代碼(這僅僅是時間的確認消息正在):

protected void btnDGV_Click(object sender, EventArgs e) { 
    ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert('Registro eliminado exitosamente !!!')", true); 
} 

問題是,當我點擊按鈕的服務器端消息ALW ays出現,jQuery對話框從不顯示。可能是什麼問題呢?

+0

而且它沒有'onclick'工作嗎? –

+0

@BasvanStein沒有onclick =「btnDGV_Click」它只是顯示一個非常薄的一面,並消失得像它出現的一樣快 –

+0

至少你需要調用$('#dialog')。對話框初始化之後但不是之前。其他的事情,我認爲你需要從onclick設置中刪除「btnDGV_Click」,並在「是」按鈕處理程序中以某種方式調用它。比如你可以使用jQuery ajax功能 – AntonE

回答

1

修改代碼: onclientclick="Confirm('Desea eliminar el registro', 'Confirmacion', this);return;" 這防止了按鈕進行回傳

和修改: "Yes": function() { jQuery(this).dialog("close"); __doPostBack('<%=btnOk.ClientID%>', '') button.click(); } 如果單擊「是」這個代碼做一個回發,並在指定方法的調用按鈕的onclick屬性

0

這裏有一些事情要檢查哪些應該排序你出去:

  1. 檢查什麼的asp:按鈕呈現爲在客戶端(您啓迪)
  2. 檢查您的OnClientClick,將會使該元素張貼到服務器。你可能想在這裏返回你的確認功能的結果。
  3. 檢查確認功能的順序。您正試圖在對話被初始化之前顯示對話框。
+0

感謝DvS,請你澄清第三點,「你正試圖在對話被初始化之前顯示對話框」好像有我的錯誤,但我可以不明白,我只是從jQuery開始,這不是一個藉口,但我找不到錯誤 –

+0

你的函數在$(「#dialog」)之前調用$('#dialog')。show();' ({...})' – DvS