在网格弹出编辑器中上传剑道:如何防止上传抛出异常时窗口关闭
本文关键字:何防止 抛出异常 窗口 网格 编辑器 | 更新日期: 2023-09-27 18:36:10
我不知道
这是否是一个奇怪的情况,但我在网上几乎找不到类似的情况。
我得到的是一个剑道上传控件(异步上传多个文件),在剑道网格弹出编辑器模板中。
我正在尝试实现以下行为:
- 用户可以从上载控件中选择多个文件,但尚未上载。
- 当用户单击弹出窗口的默认"更新"按钮时,会触发上传控件的异步上传操作。 如果用户单击"
- 取消"按钮或关闭窗口,而不单击"更新",则窗口将关闭,并且不会上传所选文件。
- 成功上传所有文件后,弹出窗口将关闭并刷新网格。
我已经毫无问题地实现了上述功能(即使,我必须拦截许多剑道控件的 javascript)。
我的问题如下:
- 如果总文件大小(以 DB + 待处理一个为单位)大于一定数量,那么作为服务器验证,我从服务器抛出异常,没有上传任何文件,并且弹出窗口不应关闭,同时弹出窗口将显示错误消息。
- 如果用户到达上述点并选择其他文件,则先前选择的挂起文件将被清除,并且其行为就像一个全新的循环。
- 如果用户到达上述点并单击"取消"按钮或单击"X"图标,则应关闭窗口。
我找不到简单的方法来实现这一点。
我能够找到与此相关的是 在网格弹出编辑器中上传.
但是,它仍然没有显示如何在前端捕获自己的异常,阻止窗口关闭并显示错误消息。
请提供任何建议!谢谢!
如何防止 onUpload 事件中的事件传播,并让您的窗口OnClose
事件检查是否根据某个指示安全关闭的标志完全关闭。
@(Html.Kendo().Upload().HtmlAttributes(new { Style = "width:300px;" })
.Name("upImport")
.Messages(e => e.DropFilesHere("Drop files here").Select("Select file"))
.Multiple(false)
.Async(a => a
.Save("UploadFile", "File")
.Remove("RemoveFile", "File")
.AutoUpload(true)
.SaveField("files")
)
.Events(events => events
.Error("onError")
.Success("onSuccess")
.Upload("onUpload")
)
)
<script type="text/javascript">
var _canPost=true;
function onUpload(e) {
_canPost=true;
var files = e.files;
$.each(files, function () {
if (this.size / 1024 / 1024 > 5) {
alert("Max 5Mb file size is allowed!");
e.preventDefault();
//Block window from closing flag here
_canPost=false;
}
});
}