我一直在使用qith jqGrid 4.3.1,但是我使用了一个额外的javascript方法来填充我的结果(它封装了返回JSON的端点)。
有没有办法可以直接在jQGrid中设置结果数,页码和可用页面,并让它正确显示在寻呼机中?然后在寻呼机中设置'箭头'来触发我的'gridreload function()'?
使用Javascript:
$j('#searchResultsGrid').jqGrid({
pager: '#gridpager',
rowNum: 100,
height: 415,
width: 765,
colNames: ['Action','First Name','Last Name','Email','Type of Record','Company','Account Name'],
colModel: [
{
name:'Invite',
index:'Invite',
width:50,
align: 'center',
sortable:false},
{
name: 'FirstName',
index: 'FirstName',
width: 75
}, {
name: 'LastName',
index: 'LastName',
width: 75
},{
name: 'Email',
index: 'Email',
width: 100
}, {
name: 'Type',
index: 'Type',
width: 75
},{
name: 'Company',
index: 'Company',
width: 100
},{
name: 'AccountName',
index: 'AccountName',
width: 100
}],
//add the buttons for adding
gridComplete: function(){
...
}
}
});
/* Wrapper Method for Endpoint */
methodController.searchLeadsContacts($j('#searchTerm').val(),pageNum,function(event,result){
$j.each(result.result.searchResults, function(i, record){
var rowData = [{
'Id': record.Id,
'FirstName': record.FirstName,
'LastName': record.LastName,
'Email': record.Email,
'Type': record.Type,
'Company': record.Company,
'AccountName': record.AccountName
}];
$j('#searchResultsGrid').jqGrid('addRowData', record.Id, rowData[0]);
});
$j('#searchResultsGrid').setGridParam({ rowNum: 100 }).trigger("refresh");
HTML:
<table id="searchResultsGrid"></table>
<div id="gridpager"></div>
答案 0 :(得分:0)
你永远不应该在循环中使用旧的addRowData
。除了您描述的问题addRowData
是填充网格的最慢方法,因为在页面的每次修改时,都应重新计算页面上所有现有元素的位置(甚至是先前添加的行)。
您应该使用jqGrid的data
参数来创建包含数据的网格。如果您使用gridview: true
(我的默认选项),则网格的包含将在一次操作中放置在网格中。
或者,您可以对数据使用datatype: 'jsonstring'
和datastr
。在这种情况下,datastr
的值可以是对象,而不仅仅是JSON字符串。
如果您从服务器加载数据并可以使用jQuery.ajax
传输数据,则应使用datatype: 'json'
。 jqGrid为您提供了很多自定义功能,因此您可以实现jqGrid为您的内部实现的Ajax请求。