2013-05-30 2 views
1

У меня есть jqgrid с несколькими строками, недоступными для редактирования. Моя проблема в том, что я хочу отключить флажок, который является inf ront строки, не редактируемой. сейчас я могу сделать данные строки для редактирования, но флажок напротив не отключается, и может быть выбран щелчком на немвыбор не редактируемой строки в jqgrid

мой код ниже: Я использую JSON для передачи данных:

внутри код этих строк используется для строки diable, я передаю внутри JSON 'ReadOnly' для некоторых строк. Полный код для jqgrid ниже:

beforeSelectRow: function(rowid, e) { 
      var grid = $('#list4'); 
      var data = grid.getRowData(rowid); 
      if (data.accessType == 'ReadOnly') { 
       $(#id).attr('disabled', true); 
       return false; 
      }else{ 
       return true; 
      } 


var dateoflaunchTxt = 'The launch date of a project refers to the first day when units are made available to prospective home-buyers (i.e. issue of the Option-to-Purchase) including private previews or any other occasion which may take place before the official launch of the project.'; 
var grid = $("#list4"); 
grid.jqGrid({ 
datastr: <%=jsonGridData%>, 
datatype: "jsonstring", 
height: 400, 
    colNames:['S No','Date of Launch','No of Units','Access Type'], 
    colModel:[ 
      {name:'id',index:'id', width:40,align:"center", sorttype:"int"}, 
      {name:'dateofLaunch',index:'dateofLaunch',align:"center", width:75, sorttype:"date",sortable:true 
      ,editable:true , editoptions: { 
         dataInit: function (element) { 
          $(element).datepicker({ 
           dateFormat:"dd/mm/yy", 
           onSelect: function(dateText, inst) { 
            var $input = inst.input; // the datepicker input 
            var $row = $input.parents("tr"); 
            $("#list4").jqGrid('saveRow',$row.attr("id"), false); 
            } 
           }); 

         } 
        }}, 
      {name:'noOfUnits',index:'noOfUnits', align:"center",width:40, sorttype:"integer",sortable:true,editable:true}, 
      {name:'accessType',index:'accessType', align:"center",width:40, sortable:false,editable:false} 
    ], 
     jsonReader : { 
      root: "rows", 
      page: "page", 
      total: "total", 
      records: "records", 
      repeatitems: true, 
      cell: "cell", 
      id: "id" 
    }, 
     editurl: "clientArray", 
     multiselect: true, 
     pagination:true, 
     pager: '#search', 
     rowNum: 15, 
     rowList: [5,10,15,30,45,60], 
     sortname: 'id', 
     sortorder: 'asc', 
     sortable:true, 
     viewrecords: true, 
     loadonce: true, 
     pgtext : "Page {0} of {1}", 
     emptyrecords:'No Records', 
     loadtext:'Loading ...', 
     showpage:true, 
     caption: "Launch Info", 
     headertitles: true, 
     cellEdit: true, 
     cellsubmit: 'clientArray', 
     beforeSelectRow: function(rowid, e) { 
      var grid = $('#list4'); 
      var data = grid.getRowData(rowid); 
      if (data.accessType == 'ReadOnly') { 
       $(#id).attr('disabled', true); 
       return false; 
      }else{ 
       return true; 
      } 
     },    
     loadComplete: function(){gridComplete(); 
     } 

}).jqGrid('navGrid','#pager', 
      {edit:false, add:false, del:false, search:false, refresh:true}); 
grid.setLabel ('dateofLaunch','','',{'title':dateoflaunchTxt}); 

jQuery("#list4").hideCol("id"); 
jQuery("#list4").hideCol("accessType"); 
$("#list4").jqGrid('setGridState','hidden'); 
$("#list4").jqGrid('setGridState','visible'); 
//$('#list4').setGridParam({sortname:'id'}).trigger('reloadGrid'); 
jQuery("#list4").setGridWidth(500); 

function pickdates(id){ 
    jQuery("#"+id+"_dateofLaunch","#list4").datepicker({dateFormat:"dd-mm-yy", constrainInput: true}); 
} 

изображения: I have selected non-editable row, see i am allowed to check the checkbox but row is not highlighted, for editable rows it will be highlighted,

, я выбрал нередактируемую строку, см я имею право проверить флажок, но строка не выделена, для редактирования строк он будет выделен

enter image description here

Все, что я хочу, чтобы отключить эту опцию из передней части всех неизменяемых строк, и он должен быть включен для редактируемых блоков

Благодаря

+0

Один из способов добиться этого заключается в следующем. Посмотрите на созданные идентификаторы (firefox -> Inspect Element) для этого флажка. Скорее всего, будет шаблон для идентификаторов checkbox. Теперь в loadComplete цикл через все строки и получить столбец accessType, и если строка должна быть сделана нередактируемой, получите соответствующий идентификатор флажка и сделайте его скрытым с помощью jQuery. – RRK

ответ

0

добавился еще один столбец в jqgrid (установить его как скрытый) Значение для этого скрытого поля рассчитывалось при создании данных массива JSON для сетки JQ. Основываясь на значении этого скрытого столбца, я бы установил строку как редактируемую или не редактируемую при загрузке JQgrid.

0

Привет, не используйте 'Множественный' jqGrid добавить свой собственный столбец, как показано ниже

{name:'my_clickable_checkbox',index:'my_clickable_checkbox',formatter: "checkbox", formatoptions: {disabled : false}}, 

и

onGridComplete:function(){ 
    //here enable or disable 'my_clickable_checkbox' column based on your condition 
} 
Смежные вопросы