簡體   English   中英

JQGrid數據不會在第二次或以后的單擊事件中重新加載…(它在第一次單擊getdata按鈕時加載)

[英]JQGrid data doesn't reload on second or subsequent click events…(it loads on first getdata button click)

我正在使用JQGrid根據從下拉列表中選擇的LogID顯示來自db的一些數據列表。 ITS在第一次單擊時正確顯示內容。 但是在所有隨后的單擊上,什么都沒有發生,頁面不會更改,重新加載或執行任何操作,但是,如果我嘗試調試腳本,我可以看到每次單擊按鈕時都會觸發按鈕單擊事件,但仍然不會恢復從數據庫更改的LogID數據。 我不確定,但我認為它與reloadGrid觸發器有關...

  <script type="text/javascript">
    var firstClick = true;
    $(document).ready(function () {
        $('.editor-date > input').datepicker();
        $('.getdata').click(function () {
            if (!firstClick) {
                $("#GridTable").trigger("reloadGrid");
            }
                firstClick = false;
                $('#GridTable').jqGrid({
                    url: '<%= Url.Action("GetData", "Report") %>',
                    datatype: 'json',
                    mtype: 'POST',
                    colNames: ['Log ID'],
                    colModel: [{ name: 'LogID', index: 'MessageLogID', key: true, formatter: pointercursor }],
                    multiselect: true,
                    sortname: 'LogID',
                    sortorder: "asc",
                    viewrecords: true,
                    pager: $('#pager'),
                    rowNum: 20,
                    rowList: [5, 10, 20, 50],
                    postData: {
                        IdParam: $('#testLogID').val()
                    },
                    jsonReader: {
                        repeatitems: false,
                        id: 'LogID',
                        records: 'TotalRecords',
                        total: 'TotalPages',
                        page: 'CurrentPage',
                        root: 'Rows'
                    },
                    loadError: function (xhr, status, error) {
                        messageBox('Error', 'Error occurred loading data.');
                    },
                    height: 'auto',
                    width: 'auto'
                });

            });

我發現了類似的問題,但解決方案無法正常工作jQuery按鈕單擊刷新jqGrid僅觸發一次

我認為你應該改變

postData: {
    IdParam: $('#testLogID').val()
}

postData: {
    IdParam: function () {
        return $('#testLogID').val();
    }
}

(有關更多信息,請參見我的舊答案 )。

您當前的代碼在第一次調用網格時保存$('#testLogID').val()的值。 以后的調用使用相同的舊值。 在每次重新加載網格期間,都會在每次調用postData函數后使用postData內部的函數/方法。 這將間接完成:jqGrid使用$.ajax使用$.param postData.IdParam調用函數postData.IdParam

另外,我建議您添加gridview: true選項,並將pager: $('#pager')更改為pager: "#pager"並將var firstClick = true;行移動var firstClick = true; 在函數$(document).ready(function () {...}); 我還想念} else { if (!firstClick) { 重要的是要理解,應該使用$('#GridTable').jqGrid({...});創建一次網格$('#GridTable').jqGrid({...}); 並僅使用$("#GridTable").trigger("reloadGrid"); 后來。

插入並刷新jqgrid,請參閱我的代碼。

 $("#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 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM