2011-09-16 4 views
8

셀 편집 플러그인을 사용하는 격자 패널이 있습니다. "당신이 셀을 편집 하시겠습니까 - 셀에 사용자가 클릭 편집 할 때ExtJS 4 - 조건부로 격자의 셀을 편집하는 방법?

가 표시된 대화 상자가 확인되어야한다 :이 그리드 패널에서

, 나는 다음과 같은 방법으로 셀에 조건부 편집을 원하는? " - 그가 '예'를 선택하면 셀이 초점을 맞추고 편집이 시작됩니다. 그렇지 않으면 셀이 비활성화 된 상태로 유지됩니다.

'beforeedit'이벤트를 사용해 보았지만 확인 상자가 표시되어 있어도 화살표 키 (편집기는 숫자 필드)를 사용하여 값을 수정할 수 있습니다. 즉, 클릭은 사용할 수 없지만 화살표 키는 여전히 필드 값을 변경할 수 있습니다.

사용자가 '예'를 선택하면 셀이 초점을 잃어서 '예'클릭 직후에 편집을 시작할 수 없습니다. 나는 '포커스'방식을 사용했지만 행운은 없었습니다.

일부 가이드가 여기에 올릴 수 있습니까?

미리 감사드립니다.

추가 정보 :

내가 사용하려고 - startEditByPosition를() - 사용자가 '예'를 선택 셀 편집 플러그인의 기능. 하지만 이렇게하면 확인 상자가 계속 나타나며 '예'를 선택하면 beforeedit 이벤트를 다시 호출하는 편집이 시작됩니다. 어떤 도움이 필요합니까?

답변

16

isEditAllowed과 같은 플래그 변수를 만들 수 있습니다. 확인 : beforeedit. 거짓 인 경우 confirm을 표시하고 아무것도하지 않습니다. 사용자가 isEditAllowed ~ truestartEditByPosition으로 설정 한 경우 edit에서 이벤트 falseisEditAllowed을 설정

 plugins: [ 
      Ext.create('Ext.grid.plugin.CellEditing', { 
       clicksToEdit: 1, 
      listeners: { 
       'beforeedit': function(e) { 
       var me = this; 
       var allowed = !!me.isEditAllowed; 
       if (!me.isEditAllowed) 
        Ext.Msg.confirm('confirm', 'Are you sure you want edit?', function(btn){ 
        if (btn !== 'yes') 
         return; 
        me.isEditAllowed = true; 
        me.startEditByPosition({row: e.rowIdx, column: e.colIdx}); 
        }); 
       return allowed; 
       }, 
       'edit': function(e) { 
       this.isEditAllowed = false; 
       } 
      } 
      }) 
     ], 

Here is demo.

+0

우수한 솔루션 분자 남자. 공유해 주셔서 감사합니다. – netemp

+0

데모가 작동하지 않습니다. – yurin

+1

@yurin, 2011 년부터 많은 내용이 변경되었습니다. extjs 리소스 파일에 대한 링크도 변경되었습니다. 데모가 수정되었습니다. 감사합니다. –

관련 문제