我最近写了一个问题" jqGrid显示默认"加载"更新表/自定义更新时的消息 "的答案.在编写答案时,我想:为什么他使用addJSONData()函数刷新网格中的数据而不是相对于setGridParam()更改URL 并刷新jqGrid数据相对于trigger('reloadGrid')?一开始我想推荐使用'reloadGrid',但在考虑了这一点后,我明白我不太确定最好的方法是什么.至少,我不能用两句话解释为什么我更喜欢第二种方式.所以我认为它可能是一个有趣的讨论主题.
确切地说:我们有一个典型的情况.我们有一个网页,其中包含至少一个jqGrid和一些其他控件,如组合框(选择),复选框等,这使用户可以更改jqGrid中显示的信息的范围.通常我们定义一些事件处理程序jQuery("#selector").change(myRefresh).keyup(myKeyRefresh)
,我们需要根据用户的选择重新加载jqGrid容器.
在阅读并分析来自其他用户输入的信息后,我们可以至少以两种方式刷新jqGrid容器:
$.ajax()手动然后在成功内部或完成$.ajax调用句柄jQuery.parseJSON()(或eval),然后调用jqGrid的addJSONData函数.我在stackoverflow.com上发现了很多使用addJSONData的例子.我希望我们讨论这两种方式的优缺点.我目前使用第二种方式,所以我将从这一方面的优势开始.
可以说:我调用现有的Web服务,将接收的数据转换为jqGrid格式并调用addJSONData.这就是我使用addJSONData方法的原因!
好的,我会选择另一种方式.jqGrid可以直接在Web服务上调用并在网格内填充结果.有很多jqGrid选项,允许您自定义此过程.
首先,可以删除或重命名发送到服务器关于任何标准参数prmNames的jqGrid的选项或对于添加任何额外的参数POSTDATA选项(参见http://www.trirand.com/jqgridwiki/ doku.php?id = wiki:options).$.ajax通过定义serializeGridData()函数(jqGrid的另一个选项),可以在jqGrid发出相应请求之前立即修改所有构造的参数.更重要的是,可以$.ajax通过设置jqGrid的ajaxGridOptions选项来更改每个参数.我用ajaxGridOptions: {contentType: "application/json"}例如作为一般设置$.jgrid.defaults.该ajaxGridOptions选项是非常强大的.对于ajaxGridOptions …
我正在使用方法addJsonRows将本地数据添加到jQgrid.由于此方法禁用排序,我需要另一种解决方案.一个限制:我无法设置url并从服务器获取数据,因为数据是通过另一个组件传递的.
在片段下方启发了案例.注释行显示限制,我通过定义一个局部变量来替换它以获得测试用例.
<script type="text/javascript" language="javascript">
function loadPackageGrid() {
// Get package grid data from hidden input.
// var data = eval("("+$("#qsmId").find(".qsm-data-packages").first().val()+")");
var data = {
"page": "1",
"records": "2",
"rows": [
{ "id": "83123a", "PackageCode": "83123a" },
{ "id": "83566a", "PackageCode": "83566a" }
]
};
$("#packages")[0].addJSONData(data);
};
$(document).ready(function() {
$("#packages").jqGrid({
colModel: [
{ name: 'PackageCode', index: 'PackageCode', width: "110" },
{ name: 'Name', index: 'Name', width: "300" }
],
pager: $('#packagePager'),
datatype: "local",
rowNum: 10000,
viewrecords: true,
caption: "Packages",
height: …Run Code Online (Sandbox Code Playgroud)