2010-01-28 4 views
1

데이터 테이블에서 두 번째 셀 (모든 행)을 클릭하면 셀 편집기가 표시됩니다. 그러나 코드에서 셀 편집기를 표시하려고합니다. 코드처럼 보이는 다음YUI Datatable showCellEditor를 호출하면 편집기가 표시되지 않는 이유는 무엇입니까?

var firstEl = oDataTable.getFirstTdEl(rowIndex); 
    var secondCell = oDataTable.getNextTdEl(firstEl); 
    oDataTable.showCellEditor(secondCell); 

나는 (클릭 또는 위의 코드에서 하나)는 showCellEditor 기능을 통해 같은 경로를 따라하지만, 위의 코드가 표시되지 않습니다 datatable.js 코드로 디버깅 할 때 편집자.

YUI 버전 2.8.0r4를 사용하고 있습니다.

답변

0

나는 이것이 이벤트 문제라고 생각합니다.

예를 들어 링크를 통해 데이터 테이블에 레코드를 추가하고 편집기를 표시해야합니다. 당신이 yourlink를 클릭하면 .... 맥 말했듯이

0

, 당신은 이전 이벤트를 중지해야이라고 tableBlur 이벤트가 있기 때문에

var mymethod = function (e) { 
    YAHOO.util.Event.stopEvent(e); 
    var r = {}; 
    r.id = 0; 
    r.value = 'hello world'; 

    myDataTable.addRow(r); 
    var cell = myDataTable.getLastTrEl().cells[0]; 
    myDataTable.showCellEditor(cell);   
} 

YAHOO.util.Event.addListener('mylink2addrecord_ID', 'click', mymethod); 

는 stopEvent없이 당신이 편집기를 표시하지 않습니다. 어떤 이유로 (tableBlur 이벤트) showCellEditor 함수와 충돌합니다. 이 문제에 대한 해결책이있는 첫 번째 장소입니다.

내가 한 모든했다, 그것을 요약하면 : 물론

YAHOO.util.Event.stopEvent(window.event);<br/> 
dt.showCellEditor(td); // dt = yui datatable obj, td = {record: yuirecord, column: yuicolumn} 

당신이 맥의 게시물처럼 쉽게 사용할 수있는 이벤트 객체가있는 경우, 당신은 그가했던 것처럼 stopEvent (예)로 전달할 수 있습니다.

0

시도해 볼 수 있습니다. 이것은 내가 가지고있는 코드의 이벤트 핸들러 세트의 큰 조각에서 발췌 한 것입니다. EditNext는 셀 위로 이동하고 편집기에 표시되는 함수입니다 (

).
this.myDataTable.subscribe("editorKeydownEvent",function(oArgs) { 
      var self = this, 
       ed = this._oCellEditor, // Should be: oArgs.editor, see: http://yuilibrary.com/projects/yui2/ticket/2513909 
       ev = oArgs.event, 
       KEY = YAHOO.util.KeyListener.KEY, 
       Textbox = YAHOO.widget.TextboxCellEditor, 
       Textarea = YAHOO.widget.TextareaCellEditor, 
       DCE = YAHOO.widget.DateCellEditor, 
       cell = ed.getTdEl(), 
       col = ed.getColumn(), 
       row,rec, 

       editNext = function(cell) { 
        cell = self.getNextTdEl(cell); 
        while (cell && !self.getColumn(cell).editor) { 

         cell = self.getNextTdEl(cell); 
        } 
        if (cell) { 
         self.showCellEditor(cell); 
        } 
       }, 
관련 문제