2009-11-02 5 views
53

jqGrid 테이블에서 열을 숨길 방법이 있습니까?하지만 양식 편집기 모달 대화 상자에서 행을 편집 할 때 읽기 전용으로 표시 할 수 있습니까?jqGrid의 숨겨진 열

답변

38
난 그냥 다음을 적용, queen3의 제안을 확장 할

트릭 않습니다 :

editoptions: { 
       dataInit: function(element) { 
          $(element).attr("readonly", "readonly"); 
         } 
      } 

시나리오 # 1 :

  • 이 필드를 그리드에 표시해야합니다
  • 필드는 형식으로 표시되어야합니다.
  • 필드는 읽기 전용이어야합니다.

솔루션 : 양식을 편집 할 때

colModel:[ 
     { name:'providerUserId', 
       index:'providerUserId', 
       width:100,editable:true, 
       editrules:{required:true}, 
       editoptions:{ 
          dataInit: function(element) { 
            jq(element).attr("readonly", "readonly"); 
          } 
          } 
      }, 
], 

providerUserId 그리드에 표시하고 볼 수 있습니다. 그러나 내용을 편집 할 수는 없습니다.


시나리오 # 2 :

  • 이 필드를
  • 이 필드를
  • 필드는 읽기 전용해야
형태로 볼 수 있어야합니다 그리드에 표시되지 않을 수 있어야합니다

해결책 :

colModel:[ 
      {name:'providerUserId', 
      index:'providerUserId', 
      width:100,editable:true, 
      editrules:{ 
         required:true, 
         edithidden:true 
         }, 
      hidden:true, 
      editoptions:{ 
        dataInit: function(element) {      
          jq(element).attr("readonly", "readonly"); 
          } 
        } 
     }, 
     ] 

두 경우 모두 jquery를 사용하여 일반적인 $ 대신 jq를 사용하고 있습니다.

<script type="text/javascript"> 
    var jq = jQuery.noConflict(); 
</script> 
+0

시나리오에 의한 멋진 설명 .. !! +1 –

21

당신은 테이블 열을 숨기려면 다음 코드를 사용할 수 있습니다 ..

JQuery("tableName").hideCol("colName"); 

그리고 당신은 다시 보여주기 위해 다음 코드를 사용할 수 있습니다. 귀하의 질문에 대한

JQuery("tableName").showCol("colName"); 

, 당신은 document.ready()에 hideCol() 코드를 호출 할 수 있으며,이 대화 상자의 편집에 showCol() 코드를 결합 할 수/이벤트를 클릭합니다.

+0

당신은 아마 편집이 완료되고, 또는 사용자/에디터가 편집을하는 경우에 해당 이벤트에 hideCol() 코드를 결합 할 수 있습니다. –

78

이 기능은 jqGrid에 내장되어 있습니다.

다음과 같이 그리드 기능을 설정하십시오.

$('#myGrid').jqGrid({ 
    ... 
    colNames: ['Manager', 'Name', 'HiddenSalary'], 
    colModel: [    
       { name: 'Manager', editable: true }, 
       { name: 'Price', editable: true }, 
       { name: 'HiddenSalary', hidden: true , editable: true, 
        editrules: {edithidden:true} 
       } 
      ], 
    ... 
}; 

적용 할 수 있지만 기본 설정은 격자보기에서 관리자의 급여를 숨겨하지만 편집 양식이 표시 될 때 편집을 허용하는 다른 editrules있다.

+0

그게 편집 폼에서 편집되기를 원하지 않는 것을 제외하고는 거의 내가 뭘 찾고 있는지. 나는 그렇게 할 방법이 없다고 생각하고 있습니다. – maxpower47

+0

편집 양식에 표시하고 싶지만 읽기만하고 싶습니까? –

+0

옙 --------------- – maxpower47

1

시도가 edithidden 사용 : 진실하고도

editoptions: { dataInit: function(element) { $(element).attr("readonly", "readonly"); } } 

을 또는 사용자 정의 편집 할 수있는 jqGrid 위키를 참조하면 설치 모든 입력 유형, 심지어 라벨은 내가 생각할 수 있습니다.

7

이 스레드는 꽤 오래되었지만 다른 사람이이 질문을 우연히 발견 할 경우를 대비하여 ... 테이블의 선택된 행에서 값을 가져와야했지만 그 열을 표시하고 싶지 않았습니다. 행은에서 왔습니다. 나는 hideCol을 사용했지만 Andy와 똑같은 문제를 겪었습니다. 이를 수정하기 위해 (해킹이라고 부름) 그리드의 너비를 다시 설정했습니다. I 테이블의 폭을 재설정 할 경우 내 로우 폭은 자동이므로

jQuery(document).ready(function() { 

     jQuery("#ItemGrid").jqGrid({ 
       ..., 
       width: 700, 
       ... 
     }).hideCol('StoreId').setGridWidth(700) 

, 상기 열 폭 재설정하지만 숨겨진 제외되므로이 간극에 채웠다.

+1

은 4.0 버전의 jqgrid와 완벽하게 작동합니다. –

+0

사실 이후에 열의 크기를 조정하려면 [이 방법] (http://www.trirand.com/blog/?page_id=393/help/recall-and-set-column-widths/)을 시도하십시오. – WEFX

0

그리드 열

jQuery("#validGrid").jqGrid('hideCol',str); 
0

그것은 조금 오래,이 게시물을 숨기려면 : 내 HTML에서 나는 jQuery를에 의해 사용되는 변수를 수정하려면 다음 스크립트를 가지고있다. 그러나이 열을 표시/숨기기 내 코드입니다. 필자는 내장 함수를 사용하여 열을 표시하고이를 표시합니다.

표시된 열/숨겨진 열을 표시하는 기능. #jqGrid는 내 그리드의 이름이고 columnChooser는 jqGrid 열 선택기입니다.

function showHideColumns() { 
     $('#jqGrid').jqGrid('columnChooser', { 
      width: 250, 
      dialog_opts: { 
       modal: true, 
       minWidth: 250, 
       height: 300, 
       show: 'blind', 
       hide: 'explode', 
       dividerLocation: 0.5 
      } }); 
관련 문제