我使用jqGrid
使用JSP
和Servlet
以表格格式显示数据。
我有两个依赖的下拉列表来显示。
以下是相关代码:
colNames:['User ID', 'Name','State','City'],
colModel:[
{name:'USERID',index:'USERID',....},
{name:'NAME',index:'NAME',....},
{
name:'STATE',
index:'STATE',
width:125,
sortable:true,
edittype:"select",
editoptions: {
maxlength: 15,
dataUrl: 'MYServlet?action=getState',
dataEvents :[{
type: 'change',
fn: function(e) {
var thisval = $(e.target).val();
$.post('MyServlet?action=getCity='+thisval,
function(data){
var res = $(data).html();
$("#STATE").html(res);
});
}
}]
}
},
{
name:'CITY',
index:'CITY',
width:125,
sortable:true,
editable:true,
edittype:"select",
editoptions:{maxlength: 50 , value: 'Select:Select'}
}
],
以上代码适用于依赖下拉列表。现在,我想在USERID
datUrl
列的editoptions
中STATE
传递dataUrl: 'MYServlet?action=getState&userid='+userid
。喜欢
USERID
但我无法在dataUrl
中获得{{1}}。
所以任何建议都将受到赞赏。
答案 0 :(得分:1)
我建议dataUrl
的一些扩展,它们现在是jqGrid的一部分。使用postData
editoption
属性定义为函数(请参阅the answer)或使用dataUrl
作为函数直接使用(请参阅here和here )。第一个功能包含在jqGrid 4.4.2中,但第二个功能包含在 4.5.2发布后的中。所以我建议你使用postData
作为函数。
您需要做的是将postData
属性添加到editoptions
列的STATE
列
editoptions: {
dataUrl: "MYServlet",
postData: function (rowid) {
return {
action: "getState",
userid: $(this).jqGrid("getCell", rowid, "USERID")
};
}
}
如果USERID
列的值是唯一的,并且您使用key: true
,那么rowid已经与USERID
列的值相同。在这种情况下,您可以简化上述代码并直接使用rowid
代替$(this).jqGrid("getCell", rowid, "USERID")
。