jqGrid 中的 gridComplete 问题
Issue with gridComplete in jqGrid
我有一个 jQGrid,它有 loadComplete 和 gridComplete 参数。网格目前运行良好。
现在我必须做一个通用的更改,我需要添加一个对寻呼机事件有效的事件。
我添加了以下代码以将另一个事件与 gridComplete 绑定。
jQuery('#grid0').jqGrid('setGridParam', { gridComplete: function()
{
myGenericMethod();
}});
此代码的问题是:调用了 myGenericMethod() 但未执行原始 gridComplete 块。
我相信@Oleg 会给出答案。
我的网格声明如下:
$("#grid0").jqGrid({
datatype: "jsonstring",
datastr:GetJSON1(),
colNames:[strFieldNames[0], strFieldNames[1], strFieldNames[2], strFieldNames[3]],
colModel:[
{name:'newdynaid', index:'newdynaid', width: 50, editable:true, editoptions:{readonly:false, size:5}, hidden:true,sortable:false},
{name:strFieldValues[1], index:strFieldValues[1], editable:false, readonly:true, width:80},
{name:strFieldValues[2], index:strFieldValues[2], editable:false, readonly:true, width:80,
hidden:false,sortable:true},
{name:strFieldValues[3], index:strFieldValues[3], editable:false, readonly:true, width:80}
],
postData: {},
rowNum: 10,
height: "100%",
shrinkToFit: true,
autowidth: true,
rownumbers: false,
pager: '#pager0',
sortname: 'id',
viewrecords: true,
sortorder: "asc",
emptyrecords: "Empty records",
loadonce: true,
sortable: true,
rowList: [6,10,20,40,60,80,100],
loadComplete: function() {
var grid0 = jQuery("#grid0");
var allDropDownElements = getAllDropDownElements0();
var allDropDownElementRefTables = getAllDropDownElementRefTables0();
processLoadComplete(grid0, allDropDownElements, allDropDownElementRefTables, 0);
},
gridComplete:function() {
var grid0 = $("#grid0");
var pager0Center = $("#pager0_center");
processGridComplete(grid0, pager0Center, 0);
onLoadpopulateName();
}
});
从 4.3.2 版开始,jqGrid 支持 jQuery Events 和回调。当时我花了很多时间来创建相应的合并到 jqGrid 主代码的拉取请求。后来在免费的 jqGrid 中,我更改了 jqGrid 的内部代码,这样实际上 每个 回调都有相应的 jQuery 事件。如果您需要编写需要在项目的每个网格上完成的 common 操作(公共回调),那么这些事件非常重要。仅使用事件可以编写不保留任何回调的 jqGrid plugin。
事件的使用非常简单。了解您可以在 before 创建 jqGrid 之前绑定事件很重要。处理事件 jqGridBeforeInitGrid
(仅存在于免费的 jqGrid 中)、jqGridInitGrid
、jqGridGridComplete
、jqGridAfterGridComplete
、jqGridLoadComplete
、jqGridAfterLoadComplete
尤其重要。
我建议您阅读 the answer,其中描述了 gridComplete
和 loadComplete
之间的区别。我个人几乎只使用loadComplete
,但回调的选择取决于您的具体要求。
告诉我们您确实需要使用 common gridComplete
。然后你可以选择在网格中使用 after gridComplete
或 before 定义一些动作。取决于您应该使用 jqGridGridComplete
还是 jqGridAfterGridComplete
事件的选择。让我们 jqGridAfterGridComplete
就是您所需要的。然后代码可以如下所示
$("#grid0").bind("jqGridAfterGridComplete", function () {
// the event handler will be executed AFTER gridComplete
...
});
$("#grid0").jqGrid({
// common options which you need
pager: "#pager0",
gridComplete:function() {
var $self = $(this), p = $self.jqGrid("getGridParam"),
pager0Center = $(p.pager + "_center"); //$("#pager0_center");
...
}
});
以上代码适用于 jqGrid(从 4.3.2 版开始)和免费的 jqGrid。如果您需要使用具有选项的事件,例如 jqGridAfterLoadComplete
那么您应该添加 first 附加事件参数并使用以第二个参数开头的典型参数:
$("#grid0").bind("jqGridAfterLoadComplete", function (e, data) {
// the event handler will be executed AFTER loadComplete
...
});
顺便说一句,免费的 jqGrid 允许您使用 pager: true
而不要定义空的 <div id="pager0"></div>
。在免费 jqGrid 的情况下 自动生成具有唯一 ID 的 div 并将 jqGrid 的 pager
选项修改为 id selecror。所以你可以像上面的例子一样使用 gridComplete
回调。有关详细信息,请参阅 the wiki article。
我有一个 jQGrid,它有 loadComplete 和 gridComplete 参数。网格目前运行良好。
现在我必须做一个通用的更改,我需要添加一个对寻呼机事件有效的事件。
我添加了以下代码以将另一个事件与 gridComplete 绑定。
jQuery('#grid0').jqGrid('setGridParam', { gridComplete: function()
{
myGenericMethod();
}});
此代码的问题是:调用了 myGenericMethod() 但未执行原始 gridComplete 块。
我相信@Oleg 会给出答案。
我的网格声明如下:
$("#grid0").jqGrid({
datatype: "jsonstring",
datastr:GetJSON1(),
colNames:[strFieldNames[0], strFieldNames[1], strFieldNames[2], strFieldNames[3]],
colModel:[
{name:'newdynaid', index:'newdynaid', width: 50, editable:true, editoptions:{readonly:false, size:5}, hidden:true,sortable:false},
{name:strFieldValues[1], index:strFieldValues[1], editable:false, readonly:true, width:80},
{name:strFieldValues[2], index:strFieldValues[2], editable:false, readonly:true, width:80,
hidden:false,sortable:true},
{name:strFieldValues[3], index:strFieldValues[3], editable:false, readonly:true, width:80}
],
postData: {},
rowNum: 10,
height: "100%",
shrinkToFit: true,
autowidth: true,
rownumbers: false,
pager: '#pager0',
sortname: 'id',
viewrecords: true,
sortorder: "asc",
emptyrecords: "Empty records",
loadonce: true,
sortable: true,
rowList: [6,10,20,40,60,80,100],
loadComplete: function() {
var grid0 = jQuery("#grid0");
var allDropDownElements = getAllDropDownElements0();
var allDropDownElementRefTables = getAllDropDownElementRefTables0();
processLoadComplete(grid0, allDropDownElements, allDropDownElementRefTables, 0);
},
gridComplete:function() {
var grid0 = $("#grid0");
var pager0Center = $("#pager0_center");
processGridComplete(grid0, pager0Center, 0);
onLoadpopulateName();
}
});
从 4.3.2 版开始,jqGrid 支持 jQuery Events 和回调。当时我花了很多时间来创建相应的合并到 jqGrid 主代码的拉取请求。后来在免费的 jqGrid 中,我更改了 jqGrid 的内部代码,这样实际上 每个 回调都有相应的 jQuery 事件。如果您需要编写需要在项目的每个网格上完成的 common 操作(公共回调),那么这些事件非常重要。仅使用事件可以编写不保留任何回调的 jqGrid plugin。
事件的使用非常简单。了解您可以在 before 创建 jqGrid 之前绑定事件很重要。处理事件 jqGridBeforeInitGrid
(仅存在于免费的 jqGrid 中)、jqGridInitGrid
、jqGridGridComplete
、jqGridAfterGridComplete
、jqGridLoadComplete
、jqGridAfterLoadComplete
尤其重要。
我建议您阅读 the answer,其中描述了 gridComplete
和 loadComplete
之间的区别。我个人几乎只使用loadComplete
,但回调的选择取决于您的具体要求。
告诉我们您确实需要使用 common gridComplete
。然后你可以选择在网格中使用 after gridComplete
或 before 定义一些动作。取决于您应该使用 jqGridGridComplete
还是 jqGridAfterGridComplete
事件的选择。让我们 jqGridAfterGridComplete
就是您所需要的。然后代码可以如下所示
$("#grid0").bind("jqGridAfterGridComplete", function () {
// the event handler will be executed AFTER gridComplete
...
});
$("#grid0").jqGrid({
// common options which you need
pager: "#pager0",
gridComplete:function() {
var $self = $(this), p = $self.jqGrid("getGridParam"),
pager0Center = $(p.pager + "_center"); //$("#pager0_center");
...
}
});
以上代码适用于 jqGrid(从 4.3.2 版开始)和免费的 jqGrid。如果您需要使用具有选项的事件,例如 jqGridAfterLoadComplete
那么您应该添加 first 附加事件参数并使用以第二个参数开头的典型参数:
$("#grid0").bind("jqGridAfterLoadComplete", function (e, data) {
// the event handler will be executed AFTER loadComplete
...
});
顺便说一句,免费的 jqGrid 允许您使用 pager: true
而不要定义空的 <div id="pager0"></div>
。在免费 jqGrid 的情况下 自动生成具有唯一 ID 的 div 并将 jqGrid 的 pager
选项修改为 id selecror。所以你可以像上面的例子一样使用 gridComplete
回调。有关详细信息,请参阅 the wiki article。