我的网络应用程序基于ASP.net MVC3并使用jqGrid。我坚持支持jqGrid所需的文件上传功能。
Web应用程序使用流程允许用户在其系统上选择文件并将其从jqGrid添加/编辑表单上载到数据库记录。用于文件上载的jqGrid colModel的编辑类型设置为edittype:'file'
。在添加/编辑表单中,我可以查看“浏览...”按钮来选择图像。 jqGrid文档建议使用Ajax File上传插件进行文件上传。我找到了两个带有这个名字的插件,并尝试了两个。
来自PHPLetter的Ajax文件上传插件:此插件适用于jqGrid,但仅限于使用旧版本的jQuery时。由于在文件上传插件中使用了HandleError未记录的API,因此jQuery 1.5以来的功能被破坏了。
来自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.我感谢任何提示/建议。
谢谢,
罗伯特
答案 0 :(得分:0)
对我有用的解决方案是编写我自己的非常短的HandleError函数,并仍然使用jqgrid - upload a file in add/edit dialog中描述的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 - upload a file in add/edit dialog的代码在Firefox中运行(在其他浏览器中,这应该不是问题)。