1

データテーブルの 2 番目のセル (任意の行) をクリックすると、セル エディタが表示されます。しかし、コードからセルエディタを表示しようとしています。コードは次のようになります。

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

(クリックまたは上記のコードから) datatable.js コードをデバッグすると、showCellEditor 関数を介して同じパスをたどりますが、上記のコードはエディターを表示しません。

YUI バージョン 2.8.0r4 を使用しています。

4

3 に答える 3

0

マックが言ったように、前のイベントを停止する必要があります。何らかの理由で、それ (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 に答える
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);

リンクをクリックすると tableBlur イベントが呼び出されるため、stopEvent がないとエディタが表示されません。

于 2010-02-16T13:15:23.980 に答える
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 に答える