jqGrid:网格函数只执行一次

jqGrid: grid function executes only once

本文关键字:一次 执行 网格 函数 jqGrid      更新时间:2023-09-26

对不起,这是一个Javascript初学者的问题。我的jqGrid函数第一次运行得很好,但是当我第二次调用它时,什么也没有发生,没有发出任何请求。代码片段:

 $(document).ready(function() { 
  $("#submit").click(function(e) {
    e.preventDefault();
    var brandsDropdown = document.getElementById("brandsDropdown");
    var brandId = brandsDropdown.options[brandsDropdown.selectedIndex].value;
    var searchParams = "brandId=" + brandId;
    doGrid(searchParams);
  });
});
function doGrid(searchParams) {
alert("doGrid, searchParams:" + searchParams);
var url="${pageContext.request.contextPath}/services/setup/project";
var editurl="${pageContext.request.contextPath}/services/setup/project";
$("#projectList").jqGrid({
    url: url + "?" + searchParams,
    editurl: editurl,
    datatype: 'xml',
    mtype: 'GET',
    ...
});

alert()告诉我第二次doGrid()真的被成功调用了。所以它真的是$("projectList").jqGrid()函数没有执行,或者默默地失败了。除非我在命名上犯了明显的错误?

我认为第二次不再需要重新生成整个网格。然后您只需更改设置参数和网格计算日期。为此,您需要trigger("reloadGrid")呼叫。

$(document).ready(function() { 

var runonce = false;

  $("#submit").click(function(e) {
    e.preventDefault();
    var brandsDropdown = document.getElementById("brandsDropdown");
    var brandId = brandsDropdown.options[brandsDropdown.selectedIndex].value;
    var searchParams = "brandId=" + brandId;
    doGrid(searchParams);
  });
});
function doGrid(searchParams) {
    alert("doGrid, searchParams:" + searchParams);
    var url="${pageContext.request.contextPath}/services/setup/project";
    var editurl="${pageContext.request.contextPath}/services/setup/project";
     if (false==runonce) {
        $("#projectList").jqGrid({
            url: url + "?" + searchParams,
            editurl: editurl,
            datatype: 'xml',
            mtype: 'GET',
            ...
        });
        runonce=true;
     } else {
         $("#projectList").jqGrid({
             url: url + "?" + searchParams,
             editurl: editurl
         }).trigger("reloadGrid");
     }