2010-01-28 2 views
1

Щелчок по второй ячейке (любой строке) в datatable вызывает отображение редактора ячейки. Но я пытаюсь отобразить редактор ячейки из кода. Код выглядит следующим образом:Почему вызов YUI Datatable showCellEditor не отображает редактор?

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

Когда я отладки в код datatable.js (либо с помощью мыши или из кода выше) следует по тому же пути через функцию showCellEditor, но приведенный выше код не будет отображаться редактор.

Я использую версию YUI 2.8.0r4.

ответ

0

Я думаю, что это проблема размытия событий.

Так, например, у меня есть ссылка, которая должна добавить запись в datatable и показать ее редактор.

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 событие вызывается при нажатии на yourlink ....

0

Как сказал Мак, вам нужно остановить предыдущее событие. По какой-то причине он (событие 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); 
        } 
       }, 
Смежные вопросы