jqgrid下拉列表传递另一列的值

时间:2013-06-10 10:44:56

标签: javascript jquery html jsp jqgrid

我使用jqGrid使用JSPServlet以表格格式显示数据。

我有两个依赖的下拉列表来显示。

  1. 显示州
  2. 显示城市
  3. 以下是相关代码:

    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中获得{{1}}。

    所以任何建议都将受到赞赏。

1 个答案:

答案 0 :(得分:1)

我建议dataUrl的一些扩展,它们现在是jqGrid的一部分。使用postData editoption属性定义为函数(请参阅the answer)或使用dataUrl作为函数直接使用(请参阅herehere )。第一个功能包含在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")