jqGrid获取多个选定的行单元格值

时间:2014-11-12 09:53:03

标签: jquery jqgrid jqgrid-php

我的jqGrid脚本:

<script>
jQuery("#task-grid").jqGrid({
    datatype: "json",
    height: 'auto',
    rowNum: 20,
    rowList: [20,30],
    colNames:['ID','RESOURCE','ROLE','SITE', 'ALLOC. TYPE', 'UNIT (%)','HOURS'],
    colModel:[
        {name:'ID',key:true,index:'ID', width:50, align:'center',search:false,hidden: true},
        {name:'RESOURCE',index:'RESOURCE', width:150, sorttype:"text",align:'center',search:true},
        {name:'ROLE',index:'ROLE',width:120 ,align:'center',search:false},
        {name:'SITE',index:'SITE', width:120, align:'center',search:false},
        {name:'ALLOC. TYPE',index:'ALLOCATION_TYPE', align:'center',width:120,search:false },
        {name:'UNIT',index:'UNIT',align:'center',search:false},     
        {name:'HOURS',index:'HOURS', search:false, align:'center',sortable:false,editable:true}
    ],
    pager: "#page",
    shrinkToFit :true,
    autowidth: true,
    viewrecords: true,
    sortname: 'RESOURCE',
        sortorder: "asc",
        multiselect: true,
        cellEdit: true,
        cellsubmit : 'clientArray',
    caption: "Resource List"
}).navGrid('#page',{ edit:true,add:false,del:false,search:false,cloneToTop:true,refresh:false},
            {

             },{
             //add options

             },{

                        //msg: "do you really want delete this keyword? This delete affect on Eqms filter"

                });


                jQuery("#task-grid").jqGrid('filterToolbar', { autosearch: true  });
        var topPagerDiv = $('#grid_toppager')[0]; 
        jQuery("#grid_toppager_center", topPagerDiv).remove(); 
</script>

下面的函数将rowId值附加到隐藏输入

 $("#addid").click(function(){
                var Ids = jQuery("#task-grid").jqGrid('getGridParam','selarrrow');
                var empIds = $("input[type=hidden][name=user_id]").val(Ids);
});

隐藏输入

<input type="hidden" name="user_id" value=""/>

现在我需要获取插入的单元格值,为此我正在使用函数

var myGrid = $('#task-grid'),
selRowId = myGrid.jqGrid ('getGridParam', 'selrow'),
celValue = myGrid.jqGrid ('getCell', selRowId, 'HOURS');

控制台日志确实向我显示所选的rowId但不显示其相应的单元格值。此外,我能够传递多个rowIds已检入的隐藏输入,但无法为单元格值执行。

感谢。

2 个答案:

答案 0 :(得分:5)

首先,jQuery("#task-grid").jqGrid('getGridParam','selarrrow');会返回数组项。您无法将数组指定为某些<input>的值。您可以使用以逗号分隔的项目列表:.val(Ids.join(",")),也可以使用JSON.stringify.val(JSON.stringify(Ids))

要从某些列而不是ID中放置值,您可以先定义一个空数组,然后使用push方法将其填入所需的值。最后,您可以使用.join(",")JSON.stringify将项目数组转换为您可以指定给<input>的字符串

var $grid = $("#task-grid"), selIds = $grid.jqGrid("getGridParam", "selarrrow"), i, n,
    cellValues = [];
for (i = 0, n = selIds.length; i < n; i++) {
    cellValues.push($grid.jqGrid("getCell", selIds[i], "HOURS"));
}
alert(cellValues.join(","));

我建议您在网格中另外使用gridview: true选项来提高性能并修复name:'ALLOC. TYPE'。如果您需要阅读一些奇特的格式化输入元素,您应该使用jsonmap,但要保留name属性,使其没有空格,点和其他meta-characters。我建议您使用与index相同的所有name。如果您可以从index删除colModel属性。如果您主要使用align:'center', search:false,我建议您按使用colModel更改cmTemplate: {align: 'center', search: false}项的默认值。它允许您从colModel中删除许多属性,使其更易读,更易于维护。

答案 1 :(得分:0)

$.makeArray(grid.jqGrid('getGridParam', 'selarrrow').map(function(elem) {
    return grid.jqGrid('getCell', elem, 'nameCELL');
}));