【问题标题】:In jqgrid how to check checkbox on row select?在jqgrid中如何检查行选择的复选框?
【发布时间】:2011-06-24 05:23:28
【问题描述】:

我的jqGrid 有以下代码,我想选择一行并选中相应的复选框,如果我再次单击同一行,该复选框应该被禁用,我该如何实现?我还提供了一张快照。

var xmlDoc = $.parseXML(xml); 
         $('#configDiv').empty();
            $('<div width="100%">')
            .attr('id','configDetailsGrid')
            .html('<table id="list1" width="100%"></table>'+
                    '<div id="gridpager"></div>'+
                '</div>')       
            .appendTo('#configDiv');    

            var grid = jQuery("#list1");

            grid.jqGrid({

              datastr : xml,
              datatype: 'xmlstring',
              colNames:['cfgId','','Name', 'Host', 'Description','Product', 'Type', 'Last Updated Time','Last Updated By',''],
              colModel:[
                  {name:'cfgId',index:'cfgId', width:90, align:"right", hidden:true},
                  {name:'',index:'', width:15, align:"right",edittype:'checkbox',formatter: "checkbox",editoptions: { value:"True:False"},editable:true,formatoptions: {disabled : false}},
                  {name:'cfgName',index:'cfgName', width:90, align:"right"},
                  {name:'hostname',index:'hostname', width:90, align:"right"},
                  {name:'cfgDesc',index:'cfgDesc', width:90, align:"right"},
                  {name:'productId',index:'productId', width:60, align:"right"},
                  {name:'cfgType',index:'cfgType', width:60, align:"right"},
                  {name:'updateDate',index:'updateDate',sorttype:'Date', width:120, align:"right"},
                  {name:'emailAddress',index:'emailAddress', width:120, align:"right"},
                  {name:'absolutePath',index:'absolutePath', width:90, align:"right", hidden:true},
              ],
              pager : '#gridpager',
              rowNum:10,
              scrollOffset:0,
              height: 'auto',

              autowidth:true,
              viewrecords: true,
              gridview: true,
              xmlReader: {
                  root : "list",
                  row: "com\\.abc\\.db\\.ConfigInfo",
                  userdata: "userdata",
                  repeatitems: false
              },
              onSelectRow: function(id,status){
                  var rowData = jQuery(this).getRowData(id); 
                  configid = rowData['cfgId'];
                  configname=rowData['cfgName'];
                  configdesc=rowData['cfgDesc'];
                  configenv=rowData['cfgType'];

                  if(status==true)
                  {

                  }

                  rowChecked=1;
                  currentrow=id;
                  },
              onCellSelect: function(rowid, index, contents, event) {
                  if(index==2)
                  {

                        $(xmlDoc).find('list com\\.abc\\.db\\.ConfigInfo').each(function()
                        {
                            //alert($(this).find('cfgId').text()+" "+configid);
                            if($(this).find('cfgId').text()==configid)  
                            {
                                configname=$(this).find('cfgName').text(); 
                                configdesc=$(this).find('cfgDesc').text();
                                configenv=$(this).find('cfgType').text();
                                filename=$(this).find('fileName').text();
                                updatedate=$(this).find('updateDate').text();
                                absolutepath=$(this).find('absolutePath').text();
                                productname=productMap[$(this).find('productId').text()];
                            }
                        });

                  }
               }

            });
            grid.jqGrid('navGrid','#gridpager',{edit:false,add:false,del:false});

更新

我的 onSelectRow

var ch =  jQuery(this).find('#'+id+' input[type=checkbox]').prop('checked');
if(ch) {
  jQuery(this).find('#'+id+' input[type=checkbox]').prop('checked',false);
} else {
      jQuery(this).find('#'+id+'input[type=checkbox]').prop('checked',true);                       
}

【问题讨论】:

    标签: jquery jqgrid


    【解决方案1】:

    在您的 onSelectRow 函数中添加:

    var ch =  jQuery(this).find('#'+id+' input[type=checkbox]').prop('checked');
    if(ch) {
          jQuery(this).find('#'+id+' input[type=checkbox]').prop('checked',false);
    } else {
          jQuery(this).find('#'+id+'input[type=checkbox]').prop('checked',true);                       
    }
    

    编辑: 将其放在您的 JS 代码中,以便在单击复选框时运行选择

    $("#list1").find('input[type=checkbox]').each(function() {
        $(this).change( function(){
            var colid = $(this).parents('tr:last').attr('id');
            if( $(this).is(':checked')) {
               $("#list1").jqGrid('setSelection', colid );
               $(this).prop('checked',true);
            }
            return true;
        });
    });
    

    更新:http://jsfiddle.net/tr5RA/14/

    【讨论】:

    • @WooDzu:它说对象不支持此属性或方法,请参阅我更新的问题
    • 如果您没有使用最新的 jQuery,请将 .prop() 更改为 .attr()
    • 抱歉,我有段时间没用电脑了。它现在对你有用吗?
    • @WooDzu:是的,它正在工作......如果你能再次帮助我的话。如果复选框被选中,我需要 jqGrid 来选择当前行,你能帮我解决这个问题吗here 是链接吗?谢谢
    猜你喜欢
    • 1970-01-01
    • 2011-09-21
    • 1970-01-01
    • 2011-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-05
    • 1970-01-01
    相关资源
    最近更新 更多