JQGrid editoptions dataurl不使用ajax get?
我有一个使用editoptions:{dataUrl:'getMetadata?type=' + myType+ '&column=colOne'}
的数据网格editoptions:{dataUrl:'getMetadata?type=' + myType+ '&column=colOne'}
。 我还将一个函数绑定到ajaxComplete
事件,以便在发出请求后执行自定义标头检查。 除了dataUrl请求之外,这对我在JQGrids请求中看到的所有内容都运行良好。 执行get请求后,Ajax complete不会触发。 ajaxStart
和ajaxStop
确实被适当地解雇了。 完成/错误/成功不是。
根据dataUrl的jqgrid文档,它应该使用ajax调用来获取数据。
‘数据是通过AJAX调用获得的,应该是一个有效的HTML select元素,带有所需的选项…’
还有什么我在这里不见了吗? 绑定代码如下。
$('body').bind('ajaxComplete',function(event,request,settings){ if (request.getResponseHeader('REQUIRES_AUTH') === '1'){ location.reload(); }; }); //Other binds added to see what is getting fired $('body').bind('ajaxError',function(event,request,settings){ if (request.getResponseHeader('REQUIRES_AUTH') === '1'){ location.reload(); }; }); $('body').bind('ajaxSuccess',function(event,request,settings){ if (request.getResponseHeader('REQUIRES_AUTH') === '1'){ location.reload(); }; }); $('body').bind('ajaxStart',function(){ var b = "ABC"; var c = "DEF"; }); $('body').bind('ajaxStop',function(event,request,settings){ var b = "ABC"; var c = "DEF"; });
编辑:忘记添加请求以200状态返回。
—————————– Ajax Select Options问题—————- ——–
放在任何位置(当前在document.ready中)的以下代码导致所有选择框不显示在搜索中。
$.extend($.jgrid.defaults, { ajaxSelectOptions: { complete: function (jqXHR) { if (jqXHR.getResponseHeader('REQUIRES_AUTH') === '1') { location.reload(); } return; } }});
ColModel和名称
gridForm.colNames = ['ID','Field1','Field2','Field3','Field4','Field5','Last User Id','Modified Date' ]; gridForm.colModel = [ {name:'id', editable: false, edittype:'text',search:true, stype:'text'}, {name:'Field1', editable: checkedOutByUser, edittype:'text', search:true,editrules:{required:true}, stype:'text'}, {name:'Field2', editable: checkedOutByUser, edittype:'select', editoptions:{dataUrl:dataUrl + "&search=false"}, search:true,editrules:{required:true}, searchoptions:{dataUrl:dataUrl + "&search=true"}, stype:'select'}, {name:'Field3', editable: checkedOutByUser, edittype:'select', editoptions:{dataUrl:dataUrl + "&search=false"}, editrules:{required:true},search:true, searchoptions:{dataUrl:dataUrl + "&search=true"}, stype:'select'}, {name:'Field4', editable: checkedOutByUser, edittype:'select', editoptions:{dataUrl:dataUrl + "&search=false"}, editrules:{required:true}, search:true, searchoptions:{dataUrl:dataUrl + "&search=true"}, stype:'select'}, {name:'Field5', editable: false, edittype:'text', search:true, stype:'text'}, {name:'userId', editable: false, edittype:'text', search:true, stype:'text'}, {name:'modifiedDate', editable: false, search:true, stype:'text', searchoptions:{dataInit:function(el){defaultCalendar.create(el, "componentGrid");}}} ];
网格定义,使用一些基于三元的,所以我们可以重新使用jqgrid调用类似的网格
$("#myGrid").jqGrid( { caption:gridForm.caption, overflow:'hidden', url:gridForm.url?gridForm.url:url, height: gridForm.height?gridForm.height:'auto', datatype: "json", colNames:gridForm.colNames, colModel:gridForm.colModel, recordtext: 'Record(s) {0} - {1} of {2}', rowNum: 20, sortname: gridForm.sortindex?gridForm.sortindex:"id", sortorder: gridForm.sortorder?gridForm.sortorder:"desc", cellEdit: false, cellurl : 'updateRow', editurl:'addRow', cellsubmit : 'remote', toolbarfilter: true, onCellSelect:gridForm.onCellSelect?gridForm.onCellSelect:null, pager: jQuery('#pager'), viewrecords: gridForm.viewrecords?gridForm.viewrecords:true, gridview: gridForm.gridview?gridForm.gridview:true, shrinkToFit: true, multiselect: gridForm.multiselect?gridForm.multiselect:true}); jQuery("#myGrid").jqGrid('filterToolbar');
最后,从数据URL返回HTML
<option value=''Dummy EntryNext EntryThirdEntryFourthEntry
对于文本墙感到抱歉,但我尝试添加一些看似有用的内容。 请注意,除了启用ajaxSelectOptions默认值之外,这在我们拥有的众多(10+)jqgrids中完全正常(在搜索填充中选择框)。
我建议你使用jqGrid的ajaxSelectOptions选项来自定义使用jqGrid从dataUrl
获取数据的Ajax请求。 我希望参数ajaxSelectOptions
可以在你的情况下看起来像
ajaxSelectOptions: { complete: function (jqXHR) { if (jqXHR.getResponseHeader('REQUIRES_AUTH') === '1') { location.reload(); } } }