jQgrid: multiselect true - 在页面加载时默认检查每一行 [英] jQgrid: multiselect true - make each row checked by default on page load

查看:20
本文介绍了jQgrid: multiselect true - 在页面加载时默认检查每一行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

jQuery("#grid").jqGrid({
    url:call_url,
        datatype: "json",
    height: 'auto',
    rowNum: 20,
    rowList: [20,30,40],
    colNames:[<?php echo $col;?>],
    colModel:[
                {name:'USER_ID',index:'USER_ID', align:'center',search:false,hidden:true,key:true},
        {name:'PROJECT_NAME',index:'PROJECT_NAME', align:'center',search:false,hidden: true},
        {name:'EMP_NAME',index:'EMP_NAME', sortable:true,summaryType:'count',summaryTpl : 'Total ({0}) Resource Hours' },
        <?php for($i=1;$i<=count($cal_arr);$i++) {?>
        {name:'<?php echo $i;?>',index:'<?php echo $i;?>',search:false,align:"center",sortable:false ,width:80 },
        <?php } ?>
    ],
    pager: "#page",
        multiselect: true,
    shrinkToFit :true,
    autowidth: true,
    viewrecords: true,
    grouping: true, 
    groupingView : { groupField : ['PROJECT_NAME'], 
                    groupColumnShow : [false], 
                    groupText : ['<b>{0}</b>'],
                    groupCollapse : false, 
                    groupOrder: ['asc'], 
                    groupSummary : [true], 
                    showSummaryOnHide: true,
                    groupDataSorted : true },
    sortname: 'EMP_NAME',
    caption: "Programatically block selection of some grid row',
    gridComplete: function () {
                    var recs = $("#grid").getGridParam("records");
                    $( ".mycontent" ).remove();
                    if (recs == 0 || recs == null) {
                        $('#grid').after("<div class='mycontent' style='color:red;text-align:center'>No Record Found</div>");
                        $("#btn_submit").hide();
                    }
            },


        loadComplete: function () {
            $("#cb_grid").click(); 
        },

            rowattr: function (item) {
                    if (parseInt(item.ID) == 1) {
                        return {"class": "ui-state-disabled ui-jqgrid-disablePointerEvents"};
                    }
            },

            //prevent selection of disabled rows
            beforeSelectRow: function (rowid, e) {
                if ($(e.target).closest("tr.jqgrow").hasClass("ui-state-disabled")) {
                    return false;   // not allow select the row
                }
                return true;    // allow select the row
            }

})

上面的代码是这样做的

必填项

将 jqGrid 与 multiselect:true 一起使用如何设置在页面加载时默认检查的每一行?jQgrid 版本 - 4.6

Using jqGrid with multiselect:true how to set each row checked by default on page load ? jQgrid Version - 4.6

推荐答案

如果你使用带有 datatype: "json" 且没有 loadonce: true 选项的 jqGrid 4.6 那么你没有那么多可能性.您必须枚举网格的所有多选复选框并在那里选择.所以你可以做

If you use jqGrid 4.6 with datatype: "json" and no loadonce: true option then you have not so much possibilities. You have to enumerate all multiselect checkboxes of the grid and select there. So you can do

$("#cb_grid").click(); // "grid" is the grid id

loadComplete 回调中例如.如果您考虑所有情况,您可能会添加更多附加条件,因为 loadComplete 将在排序、分页等时调用.

inside of loadComplete callback for example. If you would think about all cases you will probably add more additional criteria, because loadComplete will be called on sorting, paging and so on.

更新:您的代码在 rowattr 内有 $('.cbox').attr('checked', true); 行.以您不更改行的复选框的方式,该行尚不存在.而不是你在列标题的复选框上设置 checked 属性 wrong value true 而不是 "checked" .您应该删除该行以便能够使用我建议您的代码:

UPDATED: You code have $('.cbox').attr('checked', true); line inside of rowattr. In the way you don't change the checkbox of the row, which is not yet exist. Instead of that you set checked attribute with wrong value true instead of "checked" on the checkbox of the column header. You should remove the line to be able to use the code which I suggested you:

loadComplete: function () {
    $("#cb_" + this.id).click();
},
rowattr: function (item, rd, rowid) {
    //$('.cbox').attr('checked', true);
    if (parseInt(rowid) === 10) {
        return {"class": "ui-state-disabled ui-jqgrid-disablePointerEvents"};
    }
},
beforeSelectRow: function (rowid, e) {
    if ($(e.target).closest("tr.jqgrow").hasClass("ui-state-disabled")) {
        return false;   // not allow select the row
    }
    return true;    // allow select the row
}

查看演示:http://jsfiddle.net/OlegKi/aagxejj5/4/

这篇关于jQgrid: multiselect true - 在页面加载时默认检查每一行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆