Javascript 如何避免jQgrid最初的AJAX请求?

Javascript 如何避免jQgrid最初的AJAX请求?,javascript,jquery,jqgrid,free-jqgrid,Javascript,Jquery,Jqgrid,Free Jqgrid,我在jQgrid上玩得很开心,但现在我需要实现一些我称之为advanced的东西,因为我甚至不知道这是无意义的,还是无法实现,但我们开始吧 让我们考虑一下,在一个页面中,有一个SELECT元素,稍后将变成Select2JS,还有一个普通的输入元素,用于执行搜索。请参见下图,输入尚未显示,因为这是WIP 页面还包含一个网格jQgrid,如上图所示。我想: 加载网格时,首先不需要进行任何AJAX调用,因为数据将取决于用户使用Select2JS执行的操作或搜索输入。 在Select2元素的select

我在jQgrid上玩得很开心,但现在我需要实现一些我称之为advanced的东西,因为我甚至不知道这是无意义的,还是无法实现,但我们开始吧

让我们考虑一下,在一个页面中,有一个SELECT元素,稍后将变成Select2JS,还有一个普通的输入元素,用于执行搜索。请参见下图,输入尚未显示,因为这是WIP

页面还包含一个网格jQgrid,如上图所示。我想:

加载网格时,首先不需要进行任何AJAX调用,因为数据将取决于用户使用Select2JS执行的操作或搜索输入。 在Select2元素的select事件中,我需要动态更改URL,以便使用来自服务器的数据重新加载网格。 如果我点击一个搜索按钮并在输入上有一些文本,同样的事情也会发生。 我认为2和3可以使用所描述的方法完成-如果我错了请纠正我-但是1呢?如何避免网格对数据的初始AJAX调用

以下是网格定义:

var manage_form_listing_grid=$manage_form_listing; $window.onresize,maximizeGridmanage\u form\u listing\u grid; 管理表格列表网格.jqGrid{ colNames:[操作、表单名称、传真号码、文件名、文件夹], colModel:[ {name:act,template:actions,width:115}, {name:FormName,search:true,stype:text}, {name:FaxNumber,search:true,stype:text}, {name:FormFileName,search:true,stype:text}, {name:folder,search:true,stype:text} ], cmTemplate:{ 宽度:300, 自动调整大小:正确 }, iconSet:Fontsome, 行数:25, guiStyle:bootstrap, 自动调整大小:{ 是的, 真的吗 }, 行列表:[25,50,100,10000:全部], 工具栏:[正确,顶部], viewrecords:是的, 自动编码:正确, 可排序:是的, 寻呼机:是的, 是的, cloneToTop:是的, 没错, 多选:对, 多党选举:没错, 行数:对, sortname:Id, 分拣员:描述, 有一次:是的, 自动宽度:正确, autoresizeOnLoad:正确, forceClientSorting:对, ignoreCase:是的, prmNames:{id:id}, jsonReader:{id:id}, url:“/ajax/forms/get”, 数据类型:json, 行动方案:{ 上传Formicon:fa上传, uploadFormtitle:上传此表单, 克隆formicon:fa克隆, 克隆表单标题:克隆此表单, 档案室:fa档案室, archiveFormtitle:将此表单存档, 自定义:[ { 操作:uploadForm,位置:first,onClick:function选项{ alertUpload表单,rowid=+options.rowid; } }, { 操作:克隆窗体,位置:第一,onClick:函数选项{ $.ajax{ url:“/ajax/forms/clone_by_id”, 键入:“POST”, 数据类型:“json”, 数据:{ 表单_id:options.rowid } }.donefunction{ $grid.triggerreloadGrid,{fromServer:true}; toastr[success]表单已被克隆,包含以下信息:; }.errorfunction响应{ toastr[error]出现错误,无法克隆表单,错误; 控制台错误响应; }; } }, { 操作:archiveForm,位置:first,onClick:函数选项{ alertArchive表单,rowid=+options.rowid; } } ] }, 表格删除:{ url:“/ajax/forms/delete”, 德利孔:[对,左,剪法], cancelicon:[正确,左侧,fa次], 宽度:320, 标题:“删除表单”, msg:'您确定要删除此表单吗?', beforeShowForm:函数$form{ var rowids=$form.findDelData>td.datarowids; 如果rowids.length>1{ $form.findtd.delmsg.html“是否确实要删除所有选定的表单?”; } }, 完成后:功能响应、postdata、formid{ 如果response.responseText==true{ toastr[success]表单已成功删除。信息; }否则{ toastr[error]出现问题,无法删除表单,错误; } } }, 导航选项:{ 编辑:false, 加:错,, 搜索:false }, loadComplete:函数{ var$self=$this,p=$self.jqGridgetGridParam; 如果p.datatype==json{ //重现t oolbar,因为我们在工具栏中使用generateValue:true选项 $self.jqGriddestroyFilterToolbar.jqGridfilterToolbar; } } }.jqGrid'navGrid'.jqGridfilterToolbar;
我认为在创建过程中,应该在网格中使用datatype:local而不是datatype:json。datatype:local选项将阻止Ajax请求并忽略url选项。另一方面,在Select2元素的select事件上或事件处理程序$document.onclick、$load\u form。。。您应该再添加一行,将数据类型重置为json。例如,可以将中的代码修改为

$(document).on("click", $load_form, function (ev) {
    var p = $questions_grid.jqGrid("getGridParam");
    p.datatype = "json"; // !!! the new line
    p.url = "/ajax/questions/get/" + $("#load_form").data("formid");
    $questions_grid.trigger("reloadGrid");
});
您好,除了更改数据类型之外,在OP提供的本地数据类型示例中,还有哪些其他属性没有意义?我应该保留所有这些文件还是删除它们,然后在需要时进行初始化?你的想法是什么?