JQGrid数据没有't在第二次或随后的单击事件中重新加载..(它在第一次点击getdata按钮时加载)
JQGrid data doesn't reload on second or subsequent click events...(it loads on first getdata button click)
我正在使用JQGrid根据从下拉列表中选择的LogID显示数据库中的一些数据列表。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
内部函数/方法的使用遵循每次在重新加载网格期间调用该函数。它将间接完成:jqGrid使用$.ajax
,后者使用调用函数postData.IdParam
的$.param
。
此外,我建议您添加gridview: true
选项,将pager: $('#pager')
更改为pager: "#pager"
,并在函数$(document).ready(function () {...});
中移动行var firstClick = true;
。我还想念if (!firstClick) {
的} else {
部分。重要的是要理解,应该使用$('#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
- 在新的浏览器选项卡上加载新的aspx页面后调用JavaScript函数
- 更改css链接并等待加载新的css
- 如何在Ajax加载新内容时停止JavaScript执行
- 当在ng视图中加载新路由时,Tabbing(tabindex)针对错误的元素
- 如何使用输入数据加载新的extjs图表
- JQuery Masonry.Ajax图标和“;加载新项目”;绳子放错地方了
- 通过javascript在同一个打开的选项卡中重新加载新的网页内容
- 当用户到达页面右侧时加载新内容
- 数据表 AJAX 筛选器重新加载数据
- 超链接单击以加载新页面并执行JavaScript
- 单击时加载新的 SVG
- 在RadWindow中加载新页面,然后从加载的窗体中关闭窗口
- ajax在页面刷新之前不会加载新的sql结果
- 谷歌地图API-在从ajax页面加载新数据之前清除标记、多段线
- 使用Ajax加载页面,并在必要时加载新脚本
- 加载新页面时的过渡效果,AJAX
- Ajax没有正确加载新页面
- 正在加载新的Javascript,但正在调用旧的Javascript.MVC
- 咕噜咕噜的手表:实时加载重新加载落后 1 步....
- 我怎么能有一个花哨的盒子一样的弹出体加载,但与cookie不连续加载重新加载