我有一个 jqGrid Treegrid 定义如下:
$('#MyGrid').jqGrid({
colNames: ['Id','Nome','Nivel','Combo',''],
colModel: [
{ hidden: true, name: 'Id' },
{ editable: true, name: 'Nome' },
{ hidden: true, name: 'Nivel' },
{ name: 'Combo', editable: true, edittype: 'select',
editoptions: {
buildSelect: createSelectList ,
dataUrl: '/Home/GetCombo' // <-- to this controller, I want
// to send the id of the row edited to load custom items
// in select object
}},
{ formatter: 'actions', formatoptions: { keys: true },
resizable: false, search: false, sortable: false,
width: 60, viewable: false, name: 'actions' }
],
cellEdit: true,
url: '...',
datatype: 'json',
editurl: '...',
jsonReader: {
repeatitems: false,
id: 'Id',
subgrid: { repeatitems: false }
},
mtype: 'POST',
gridComplete: function() { myOnGridComplete(); },
ajaxSelectOptions: {
data: {
tempid: function () {
// !!! the next line always returns null
return $('#MyGrid').jqGrid('getGridParam', 'selrow');
}
}
},
prmNames: { npage: 'npage' },
rowNum: -1,
ExpandColClick: true,
ExpandColumn: 'Nome',
treeGrid: true,
treeGridModel: 'adjacency',
width: 700,
height: '100%'
});
我的目标是将当前行 ID 发送到服务器,但是当我使用$('#MyGrid').jqGrid('getGridParam', 'selrow') 时,我总是得到一个空值。
我已经阅读了这篇文章,但没有一个能解决我的问题:
有什么建议吗?
提前谢谢!
更新1:
TreeGrid 绑定没问题。真正的问题是当我单击叶节点中的编辑按钮时。在这种情况下,我想向服务器发送额外的数据。
我尝试使用 来完成此操作ajaxSelectOptions
,但此命令始终返回 null:$('#MyGrid').jqGrid('getGridParam', 'selrow')
解决方法
这是我在 Oleg 帮助之前所做的一种解决方法:
第 1 步:在 HTML 中创建隐藏字段
第 2 步:在我的 myOnGridComplete 函数中,我为编辑按钮设置了一个点击事件:
function onGridAjusteDTOComplete()
{
$('#MyGrid').find('span.ui-icon-pencil').each(function() {
$(this).click(function(){
var rowID = $(this).parents('tr').attr('id');
// !!! the next commented line not work in my case
// $('#MyGrid').jqGrid('setSelection', therowid );
$('#myHiddenField').val(rowID); // <-- this works
});
});
}
第3步:rowID
从隐藏字段中获取ajaxSelectOptions
:
ajaxSelectOptions: "{type: 'GET', contentType: 'application/json; charset=utf-8',dataType: 'json',cache: false, async:false, data: {id: function () { return $('#myHiddenField').val(); }}}"
解决方案
请参阅下面 Oleg 提供的解决方案。真是太神奇了。谢谢奥列格。