1

我的网络应用程序基于 ASP.net MVC3 并使用 jqGrid。我坚持支持 jqGrid 所需的文件上传功能。

Web 应用程序使用流程允许用户在他们的系统上选择一个文件,并将其从 jqGrid 添加/编辑表单上传到数据库记录。用于文件上传的 jqGrid colModel 的编辑类型设置为edittype:'file'. 在添加/编辑表单中,我可以查看“浏览...”按钮来选择图像。jqGrid 文档建议使用 Ajax 文件上传插件进行文件上传。我找到了两个同名的插件并尝试了两个。

  1. 来自PHPLetter的 Ajax 文件上传插件:此插件适用于 jqGrid,但仅适用于旧版本的 jQuery。由于在文件上传插件中使用了 HandleError 未记录的 API,该功能从 jQuery 1.5 开始被破坏。

  2. 来自Valums的Ajax 文件上传插件。我已经能够从 jqGrid 外部成功使用这个插件。我用于文件上传的脚本(在我的网格之外)如下:

    var uploader = new qq.FileUploader({
           element: fileUploader,
           action: @Url.Action("UploadProductImage"), 
           allowedExtensions: ['jpg', 'jpeg', 'png', 'gif'], )};
    

但是,我还没有想出将这个插件集成到 jqgrid 添加/编辑表单中的方法。如何初始化我的上传脚本并调用它?

我不能使用基于 Flash/HTML5 的文件上传解决方案(例如 Uploadify),因为我的应用程序需要使用 IE 7 和 8。我感谢任何提示/建议。

谢谢,

罗伯特

4

1 回答 1

0

对我有用的解决方案是编写我自己的非常短的 HandleError 函数,并且仍然使用jqgrid 中描述的 Ajax 文件上传插件 - 在添加/编辑对话框中上传文件。所以我使用该解决方案,但我添加了以下功能:

jQuery.extend({
    handleError: function( s, xhr, status, e ) {
        // If a local callback was specified, fire it
        if ( s.error )
            s.error( xhr, status, e );
        // If we have some XML response text (e.g. from an AJAX call) then log it in the console
        else if(xhr.responseText)
            console.log(xhr.responseText);
    }    
});

我在这里找到了功能:http: //www.johnmain.co.uk/blog/2012/06/14/jquery-handleerror-is-not-a-function-issues/

还要注意一件事:我不得不换行

dataType: 'json',

dataType: 'JSON',

为了从jqgrid 获取代码 - 在 Firefox 中工作的添加/编辑对话框中上传文件(在其他浏览器中这应该不是问题)。

于 2012-08-14T15:37:24.933 回答