1

单击数据表中的第二个单元格(任何行)会显示单元格编辑器。但是,我正在尝试从代码中显示单元格编辑器。代码如下所示:

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

当我调试 datatable.js 代码(通过单击或从上面的代码)时,它通过 showCellEditor 函数遵循相同的路径,但上面的代码不会显示编辑器。

我正在使用 YUI 版本 2.8.0r4。

4

3 回答 3

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);
                    }
                },
于 2011-08-16T19:25:56.963 回答
0

我认为这是模糊事件问题。

因此,例如,我有必须将记录添加到数据表并显示其编辑器的链接。

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 事件......

于 2010-02-16T13:15:23.980 回答
0

正如mac所说,您需要停止上一个事件。由于某种原因,它(tableBlur 事件)与 showCellEditor 函数冲突。这是第一个解决问题的地方。

总结一下,我所做的就是:

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

当然,如果您像 mac 的帖子那样有现成的事件对象,您可以像他一样将它传递给 stopEvent(e)。

于 2010-10-27T18:25:29.440 回答