在网格弹出编辑器中上传剑道:如何防止上传抛出异常时窗口关闭

Kendo Upload in Grid Popup Editor: How to prevent window close when upload throw exception

本文关键字:何防止 抛出异常 窗口 网格 编辑器      更新时间:2023-09-26
我不知道

这是否是一个奇怪的情况,但我在网上几乎找不到类似的情况。

我得到的是一个剑道上传控件(异步上传多个文件),在剑道网格弹出编辑器模板中。

我正在尝试实现以下行为:

  • 用户可以从上载控件中选择多个文件,但尚未上载。
  • 当用户单击弹出窗口的默认"更新"按钮时,会触发上传控件的异步上传操作。
  • 如果用户单击"
  • 取消"按钮或关闭窗口,而不单击"更新",则窗口将关闭,并且不会上传所选文件。
  • 成功上传所有文件后,弹出窗口将关闭并刷新网格。

我已经毫无问题地实现了上述功能(即使,我必须拦截许多剑道控件的 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;
        }
    });
}