SweetAlert2 ASP.NET Gridview 删除行确认
SweetAlert2 ASP.NET Gridview Delete Row Confirm
删除gridview一行时我尝试使用sweetalert2
这是我的 js:
<script>
var object = { status: false, ele: null };
function ConfirmDelete(ev) {
if (object.status) { return true; };
Swal.fire({
title: 'Are you sure?',
text: "You won't be able to revert this!",
icon: 'warning',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: 'Yes, delete it!',
preConfirm: function () {
return new Promise(function (resolve) {
setTimeout(function () {
resolve()
}, 2000)
})
object.status = true;
object.ele = ev;
object.ele.click();
}
}).then(function () {
})
return false;
};
</script>
<asp:ImageButton ImageUrl="~/dist/img/delete.png" runat="server" CommandName="Delete" OnClientClick="return ConfirmDelete();" ToolTip="Sil" Width="20px" Height="20px" />
设置这个更简单。您希望该函数为 return true 或 false。
并且引入 promise 和 hand stands 不会解决这个问题,因为像大多数 js 加载项一样,无论是 jQuery.UI 对话框,还是这种情况下的甜蜜警报,它们 运行 异步 -除非其他 js 例程正在调用该警报例程,否则引入 promise 不会对您有所帮助 - 而事实并非如此。
此外,我们“假设”您拥有的按钮在网格中 - 看起来确实如此,但您至少应该提供周围的标记。
不是世界末日。
所以,这应该有效:
你的按钮,变成这样:
<asp:ImageButton ImageUrl="~/dist/img/delete.png" runat="server"
CommandName="Delete"
OnClientClick="return ConfirmDelete(this);"
ToolTip="Sil" Width="20px" Height="20px" />
注意在上面我们将按钮传递给 js 例程时非常小心。
所以,js现在可以变成这样:
<script>
var ConfirmDeleteOk = false
function ConfirmDelete(btn) {
if (ConfirmDeleteOk) {
ConfirmDeleteOk = false
return true
}
swal({
title: "Are you sure?",
text: "Are you sure that you want to delete this data?",
icon: "warning",
buttons: true,
dangerMode: true,
})
.then(willDelete => {
if (willDelete) {
ConfirmDeleteOk = true;
btn.click();
}
else {
swal("Safe!", "Your imaginary file is safe!", "success");
}
});
return false;
}
</script>
注意例程的最后一行“return false”
我看不出有任何理由为 return 创建一些 js 对象,而我们关心的只是 return 真或假 - 所以为此使用一个简单的变量。
我解决了下面的问题代码。
这是按钮
<asp:ImageButton ImageUrl="~/dist/img/delete.png" runat="server" CommandName="Delete" OnClientClick="return conFunction(this);" ToolTip="Sil" Width="20px" Height="20px" />
这是 JS
<script type="text/javascript">
var object = { status: false, ele: null };
function conFunction(ev) {
var evnt = ev;
if (object.status) { return true; }
Swal.fire({
title: 'Silmek istediğinize emin misiniz?',
text: "Onayladıktan sonra işlem geri alınamaz",
icon: 'warning',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: 'Evet, Sil',
cancelButtonText: 'İptal',
closeOnConfirm: true
}).then((result) => {
if (result.isConfirmed) {
object.status = true;
object.ele = evnt;
evnt.click();
}
})
return object.status;
};
</script>
删除gridview一行时我尝试使用sweetalert2
这是我的 js:
<script>
var object = { status: false, ele: null };
function ConfirmDelete(ev) {
if (object.status) { return true; };
Swal.fire({
title: 'Are you sure?',
text: "You won't be able to revert this!",
icon: 'warning',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: 'Yes, delete it!',
preConfirm: function () {
return new Promise(function (resolve) {
setTimeout(function () {
resolve()
}, 2000)
})
object.status = true;
object.ele = ev;
object.ele.click();
}
}).then(function () {
})
return false;
};
</script>
<asp:ImageButton ImageUrl="~/dist/img/delete.png" runat="server" CommandName="Delete" OnClientClick="return ConfirmDelete();" ToolTip="Sil" Width="20px" Height="20px" />
设置这个更简单。您希望该函数为 return true 或 false。
并且引入 promise 和 hand stands 不会解决这个问题,因为像大多数 js 加载项一样,无论是 jQuery.UI 对话框,还是这种情况下的甜蜜警报,它们 运行 异步 -除非其他 js 例程正在调用该警报例程,否则引入 promise 不会对您有所帮助 - 而事实并非如此。
此外,我们“假设”您拥有的按钮在网格中 - 看起来确实如此,但您至少应该提供周围的标记。
不是世界末日。
所以,这应该有效:
你的按钮,变成这样:
<asp:ImageButton ImageUrl="~/dist/img/delete.png" runat="server"
CommandName="Delete"
OnClientClick="return ConfirmDelete(this);"
ToolTip="Sil" Width="20px" Height="20px" />
注意在上面我们将按钮传递给 js 例程时非常小心。
所以,js现在可以变成这样:
<script>
var ConfirmDeleteOk = false
function ConfirmDelete(btn) {
if (ConfirmDeleteOk) {
ConfirmDeleteOk = false
return true
}
swal({
title: "Are you sure?",
text: "Are you sure that you want to delete this data?",
icon: "warning",
buttons: true,
dangerMode: true,
})
.then(willDelete => {
if (willDelete) {
ConfirmDeleteOk = true;
btn.click();
}
else {
swal("Safe!", "Your imaginary file is safe!", "success");
}
});
return false;
}
</script>
注意例程的最后一行“return false”
我看不出有任何理由为 return 创建一些 js 对象,而我们关心的只是 return 真或假 - 所以为此使用一个简单的变量。
我解决了下面的问题代码。
这是按钮
<asp:ImageButton ImageUrl="~/dist/img/delete.png" runat="server" CommandName="Delete" OnClientClick="return conFunction(this);" ToolTip="Sil" Width="20px" Height="20px" />
这是 JS
<script type="text/javascript">
var object = { status: false, ele: null };
function conFunction(ev) {
var evnt = ev;
if (object.status) { return true; }
Swal.fire({
title: 'Silmek istediğinize emin misiniz?',
text: "Onayladıktan sonra işlem geri alınamaz",
icon: 'warning',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: 'Evet, Sil',
cancelButtonText: 'İptal',
closeOnConfirm: true
}).then((result) => {
if (result.isConfirmed) {
object.status = true;
object.ele = evnt;
evnt.click();
}
})
return object.status;
};
</script>