![](/img/trans.png)
[英]innerHTML works on first button click but doesn't work on second click
[英]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.