1

jqGrid用来以表格格式显示数据,使用JSPServlet

我有两个相关的下拉菜单要显示。

  1. 显示状态
  2. 秀城

以下是相关代码:

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 中传递。喜欢editoptionsSTATE

dataUrl: 'MYServlet?action=getState&userid='+userid

但是我USERID进不去dataUrl

因此,任何建议将不胜感激。

4

1 回答 1

1

我建议了一些扩展,dataUrl这些扩展现在是 jqGrid 的一部分。它是使用定义为函数的postData属性(参见答案)或直接使用 as 函数(参见此处此处)。第一个特性包含在 jqGrid 4.4.2 中,但第二个特性是4.5.2 发布之后包含的。所以我建议你使用as 函数。editoptiondataUrlpostData

您需要做的是向表单中的列添加postData属性editoptionsSTATE

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").

于 2013-06-10T11:14:28.677 回答