我有一个带下拉列表的jqGrid。我正在使用“自定义格式化程序”(dropDownFormatter1
)值来填充下拉列表。我得到了这个,但是根据onchange
我需要执行一些功能。我的主要问题是如何在我的下面的代码中添加onchange
事件。
这是我的代码:
$("#grid").jqGrid({
url: bookingStatusurl,
datatype: "json",
shrinkToFit: true,
colModel: [
{ name: 'BookingStatusID', index: ''BookingStatusID'', hidden: true,
key: true },
{ name: 'BookingStatus', index: 'BookingStatus', width: 260,
sortable: false },
{ name: 'NumberOfBooking ', index: 'NumberOfBooking', width: 300,
sortable: false, align: 'right', formatter: 'currency',
formatoptions: { prefix: "Number Of Booking: "} },
{ name: 'SortOrderType', index: 'SortOrderType', align: 'right',
edittype: 'select', formatter: **dropDownFormatter1** }
//As per the on change of my dropDownFormatter1 by subgrid need to change.
],
rowNum: 40,
rowList: [40, 80, 120]
//sortname: 'id',
viewrecords: true,
//sortorder: "desc",
autowidth: true,
multiselect: false,
shrinkToFit: true,
height: 'auto',
altRows: true,
subGrid: true,
//loadonce: false,
//caption: "Pipeline By Booking Status",
subGridRowExpanded: function (subgrid_id, row_id) {}
});
以下是cutom格式化程序的代码:
function dropDownFormatter1(cellvalue, options, rowObject, action) {
// var statusTypeId = rowObject[0];
return '<label>Sort Order:</label>' +
'<select>' +
'<option value="asc">asc</option>' +
'<option value="desc">desc</option>' +
'</select>';
}
请帮帮我。
感谢。
答案 0 :(得分:0)
实施onchange
回调的最简单方法是在生成onchange
格式化程序的HTML代码中添加dropDownFormatter1
属性。例如,您可以在全局级别定义自定义JavaScript函数
var myOnChangeFormatter1Callback = function (event) {
var $select = $(this), $tr = $select.closest('tr.jqgrow');
alert ("the select in the row with id=" + $tr.id +
" are changed to the option" + $select.val());
};
要从myOnChangeFormatter1Callback
致电onchange
,可以将dropDownFormatter1
修改为以下
function dropDownFormatter1(cellvalue, options, rowObject, action) {
// var statusTypeId = rowObject[0];
return '<label>Sort Order:</label>' +
'<select onchange="myOnChangeFormatter1Callback.call(this, arguments[0]);">' +
'<option value="asc">asc</option>' +
'<option value="desc">desc</option>' +
'</select>';
}
通常会使用event
作为第一个参数(仅限广告)参数的名称调用事件,但在某些浏览器中,应使用windows.event
代替。因此,为了更兼容,应该使用event || windows.event
或像我一样只使用arguments[0]
。
如果您不想使用var myOnChangeFormatter1Callback = function (...
定义功能并使用function myOnChangeFormatter1Callback (...
,则无法在列表中的函数内转发this
在严格的JavaScript执行模式下。如果您要转发this
作为附加参数,请使用"myOnChangeFormatter1Callback(this, arguments[0]);"
代替"myOnChangeFormatter1Callback.call(this, arguments[0]);"
。 myOnChangeFormatter1Callback
的原型应从var myOnChangeFormatter1Callback = function (event) {...}
更改为function myOnChangeFormatter1Callback (myObj, event) {...}
。