$(function ()
{
$("#dialog-confirm").dialog(
{
autoOpen: false,
resizable: false,
height: 240,
modal: true,
buttons: {
"Delete": function ()
{
$(this).dialog("close");
return true;
},
Cancel: function ()
{
$(this).dialog("close");
return false;
}
},
close: function() {
;
}
});
});
function ShowDeleteConfirmation()
{
var activeEmelent = document.activeElement;
if (activeEmelent.innerHTML == 'Delete')
{
$('#dialog-confirm').dialog('open');
return false;
}
}
// aspx代码
<asp:LinkButton ID="lbDelete" runat="server" Text="Delete" CssClass="wecc-grid-link" data-cmd="delete" OnClick="Delete_Click" OnClientClick=" return ShowDeleteConfirmation();" ></asp:LinkButton>
//服务器端事件
protected void Delete_Click(object sender, EventArgs e)
{
_deleteClicked = true;
LinkButton lb = sender as LinkButton;
GridViewRow row = lb.Parent.NamingContainer as GridViewRow;
if (row.RowState != (DataControlRowState.Selected | DataControlRowState.Edit) &&
row.RowState != (DataControlRowState.Alternate | DataControlRowState.Selected | DataControlRowState.Edit))
{
Delete(row);
}
else
{
SetRowState(row.RowIndex, DataControlRowState.Normal);
}
gvSaveState.DataSource = this.Data;
gvSaveState.AllowSorting = true;
gvSaveState.DataBind();
lbAddItem.Visible = true;
lbRefreshData.Visible = true;
}
当我点击gridview中的删除链接按钮时,弹出对话框。但是,在对话框中单击“删除”按钮时,它不会触发我的服务器端单击事件。单击“删除”时,我会返回值“true”。
在此感谢您的帮助。
答案 0 :(得分:1)
jQuery对话框本质上是异步的。标准confirm()函数会阻止执行,直到返回结果。 jQuery对话框不会停止执行,因此showDeleteConfirmation()始终返回false,并且您的jQuery按钮将其值返回到任何值。如果你想使用jQuery对话框,你的删除按钮的功能将需要有提交表单的代码,可能是在隐藏字段中放入一些ID并在隐藏按钮上调用click()。
答案 1 :(得分:0)
该对话框可防止发生默认操作,因此您需要在Delete
按钮功能中提交或执行操作。
因此,返回false
或true
并不符合您的预期。
您需要向此添加更多内容(AJAX以发送到服务器或类似的东西)
"Delete": function ()
{
<add call to function to send data to server>
$(this).dialog("close");
},
答案 2 :(得分:0)
请将删除按钮更改为确认。
使用此代码"Confirm": function ()
代替"Delete": function ()