【问题标题】:jqGrid - URL empty on second trigger reloadjqGrid - 第二次触发重新加载时 URL 为空
【发布时间】:2026-02-11 02:05:01
【问题描述】:

jqGrid - 网格使用外部文本字段搜索填充得很好。如果我转到另一个页面然后返回并重新搜索,则 url 没有传入,因此没有调用。

在第 2563 行的 jqgrid 脚本中,ts.p.url 为空。但是我的代码在 reloadgrid 代码中提供了一个 url。重新加载第一次有效,但第二次无效。

            case "script":
                $.ajax($.extend({
                    url:ts.p.url,
                    type:ts.p.mtype,
                    dataType: dt ,

网格代码:

$("#orchard-grid").jqGrid({
    styleUI: "Bootstrap",
    datatype: 'json',
    colNames: ['Tree Id', "Orchard Name", 'Row', 'Column', 'GID', 'Clone', 'Status'],
    colModel: [
            { name: "TreeId", key: true, hidden: true },
            { name: "OrchardName", search: true },
            { name: "GridRow", search: false },
            { name: "GridColumn", search: false },
            { name: "GID", search: true },
            { name: "Clone", search: true },
            { name: "LocationStatus", search: false}
    ],
    loadonce: false,
    height: 400,
    autowidth: true,
    rowNum: -1,
    ajaxGridOptions: { cache: false},
    onSelectRow: function (id) {
        EditRow(id);
    }
});

这是不触发就停止的函数:

$(document).ready(function () {
var gid = $("#gidNumber").val();
var orchard = $("#OrchardSelect").val();
var url = $("#GridUrl").val();

if (gid !== "" ) {
    $("#orchard-grid").jqGrid('setGridParam', {
        dataType: "json", 
        url: url,
        postData: {
            gidNumber: gid
        }
    }).trigger('reloadGrid');
}

if (orchard !== "") {
    $("#orchard-grid").jqGrid('setGridParam', {
        dataType: "json", 
        url: url,
        postData: {
            orchardSelect: orchard
        }
    }).trigger('reloadGrid');
}
});

【问题讨论】:

    标签: jquery jqgrid


    【解决方案1】:

    结果当我尝试填充网格时,它没有完成加载。我通过在网格的 loadComplete 事件中移动重新加载函数来修复它,因此网格将在被要求重新加载之前完成渲染。

    【讨论】:

      【解决方案2】:

      $("#Tab1").click( function(){ 
      
       var gridArrayData = [];
         var ids =jQuery("#jqGrid").jqGrid('getGridParam','selarrrow'); 
         var totalRowsCount = ids.length;
         if(totalRowsCount>0)
        {
         $.ajax({ 
           type: "POST", 
           url: 'Operaciones_Grilla.php?Op=30'+'&Filtro='+ids+'&page=1&rows=10', 
           dataType: "json",
           success: function(data) {
      		$("#jqGrid2")[0].grid.beginReq();
           	var data = data.rows;
      		var ii =0;
              for(var i in data)
                     {
      						
      						
      						gridArrayData.push({
                                      id: data[i].id,
                                      sistema: data[i].des_sistema,
                                      opcion: data[i].des_opciones_sistema,
      								id_sistema:data[i].id_sistema,
      								id_opcion:data[i].id
      								
                                  });                            
                      }// cierra el for each
      					  jQuery('#jqGrid2').jqGrid('clearGridData')
                           .jqGrid('setGridParam', {data: gridArrayData})
                           .trigger('reloadGrid');
      					
      						$("#jqGrid2")[0].grid.endReq();
      						$("#jqGrid2").trigger('reloadGrid');
      		       }
                 }); 
      						   $('#tabs a[href="#tabs-2"]').trigger('click');	
      						   }else{
      							  alert('debe escoger un registro') ;
      					}// cierra el íf que cuenta el numero de registros
      	});
      
      
      
      
      
      
      
      
      
      
      //*************** PHP CODE ************************//
      
      
      Operaciones_Grilla.php?Op=30 call this function :
      
       public function Sube_Data_Grid_Perfiles22($page,$rows,$filtro)
      	  {
      	   
      		 $respuesta = new stdClass();
      	     $this->page =$page;
      		 $this->limit=$rows;
      		 $sql="";
      		 $sql='select count(a.*) from opciones_sistema a where a.id_opciones_sistema in  '."(".$filtro.")";
         
               $count = $this->dbh2->query($sql)->fetchColumn();
      		 if( $count >0 ) {
      	                $total_pages = ceil($count/$this->limit);
                     } else {
      	                $total_pages = 0;
                     }
                    if ($this->page > $total_pages)$this->page=$total_pages;
      		     
                   $start = $this->limit*$page - $this->limit; 
                 $i=0;
      
                 $Sql='select a.id_opciones_sistema, b.des_sistema,a.des_opciones_sistema, b.id_sistema from opciones_sistema a,sistemas b where a.id_sistema = b.id_sistema and a.id_opciones_sistema in '."(".$filtro.") order by b.id_sistema,a.id_opciones_sistema ";
        
      		$stmt = $this->dbh2->prepare($Sql);
      		$stmt->execute();
      		
      		
      		
      		foreach ($stmt as $row) {
      		
      		        $respuesta->rows[$i]['id']=$row["id_opciones_sistema"];
      				$respuesta->rows[$i]['des_sistema']=$row["des_sistema"];
      				$respuesta->rows[$i]['des_opciones_sistema']=$row["des_opciones_sistema"];
      				$respuesta->rows[$i]['id_sistema']=$row["id_sistema"];
                      
                      $i++;
      		
         
         }// cierra sube data grid
      
           $this->dbh2 = null;
      	
      	 return json_encode($respuesta);
      	
      	
      	 
      	  
      }// cierra metodo suba data grid

      【讨论】:

      • 您是否尝试运行您的代码 sn-p? 'Error: { "message": "Uncaught SyntaxError: Unexpected token function", ...}' 也许你应该添加一个解释,说明这段代码应该如何工作以及它如何回答问题。
      • 您好,这是一个代码片段,您必须使其适应您的项目。来自委内瑞拉的问候