2011-03-15 4 views
2

어떻게 모든 그리드의 데이터를로드 한 후 "readonly"로 셀 입력을 변경할 수 있습니까?jqgrid는 그리드가로드 된 후 읽기 전용으로 셀 입력을 변경합니다.

로드 된 행만이 셀을 읽기 전용으로하고 싶습니다. 새 행을 추가 할 때이 셀을 읽기 전용으로하고 싶지는 않습니다.

감사의 말을 전하고 싶습니다.

UPDATE :이 내 코드입니다

:

$("#Grid1").jqGrid(
     { 
      editurl: "clientArray", 
      datatype: 'xmlstring', 
      datastr: '<%=_xml_string %>' , 
      colNames:['','cell1','cell2', 'cell3'], 
      colModel:[ 
             {name:'cell1',index:'cell1', hidden: true}, 
             {name:'cell2',index:'cell2', width:150, editable:true, edittype:'text',sorttype:"int" , 
              editoptions: 
              {            
               maxlength:5, 
               dataInit: function (elem) 
               { 
                $(elem).numeric(false); 

                $(elem).blur(function(event_) 
                { 

                }); 
               }, 
               dataEvents: 
               [ 
               { 
                type: 'keydown', 
                fn: function(e) 
                { 
                 var key = e.charCode || e.keyCode; 
                 if(key == 113) 
                 { 
                 } 
                } 
               } 
              ] 
              }             
             }, 
             {name:'cell3',index:'cell3', width:150 , editable:true,sorttype:"text" , 
              editoptions: 
              { 
              readonly: 'readonly' , 
              dataInit: function (elem) 
              { 
                $(elem).attr("tabindex","-1");              
              }             
              } 
             } 
            ], 
      height: '120px' , 
      autowidth: true, 
      shrinkToFit: false, 

      beforeSelectRow: function(rowid, e) 
      { 
       if (required_field != rowid && required_field!="") return false; 
       else 
       { 
        if($(this).getGridParam('selrow') == rowid) 
         return false; 
        else 
         return true; 
       } 
      }, 
      onSelectRow: function(id) 
      {           
       save_row(lastSel); 
       get_grid().editRow(id,false,'','','','','','',''); 
       jQuery ('#' + id + _cell2').focus(); 
       lastSel=id;      
      }, 
      loadComplete: function() 
      { 
       var grid = $("#Grid1"); 
       var ids = grid.jqGrid('getDataIDs'); 
       for (var i=0;i<ids.length;i++) 
       { 
        var id_=ids[i];alert(id_); 
        grid.jqGrid('setCell',id_,'cell2','','not-editable-cell'); 
       } 
      } 
      });    

답변

3

당신이 그리드는 셀에 언제든지 '하지 - 편집 가능한 셀'을 설정할 수 있습니다를 편집 할 몇 가지 편집 모드를 사용하는 경우 또는 'not-editable-row'행을 편집하여 셀 또는 행을 편집 할 수 없도록합니다. 코드 예제는 this answer을 참조하십시오.

+0

@Oleg : 감사합니다! 하지만 어떤 이유로 나를 위해 작동하지 않는 .. 내가 editurl 사용하고 있습니다 : "clientArray", 데이터 형식 : 'xmlstring', datastr : '<% = _ xml_string %>'및 dataInit : function (elem) 나는 $ (elem). 숫자 (거짓);. 나는 당신이 예제에서 쓴 것과 정확히 어떤 아이디어를 추가 했습니까? – user590586

+0

@ user590586 :'dataInit' 안에'$ (elem) .numeric (false);'를 사용하려고했는데 모두 코드에서 완벽하게 작동했습니다. 일부 행에 'not-editable-row'클래스를 추가하면 편집 할 수 없습니다. 나는 당신이 "읽기 전용"으로 만들고자하는 셀을 이해하지 못합니다. 아마 당신은 갖고 싶은 "readonly"셀의 HTML 코드를 게시해야하고 코드를 jqGrid 셀 안에 어떻게 배치 할 수 있는지 보여 주어야합니다. – Oleg

+0

@Oleg : 나는 정말로 당신의 도움을 호소합니다 !! 내 질문을 curretn 코드로 업데이트했습니다. – user590586

관련 문제