YUI数据表条件下拉编辑器



我目前正在编辑一个使用YUI 2.5的应用程序。我以前没用过,需要一些帮助。

我希望能够使用datatable为特定列的行添加下拉编辑器,但我只希望在相应行的另一列中出现特定值时才出现。

是否可以在列定义中添加某种If语句?我必须使用自定义格式化程序吗?

var eventColumnDefs = [
{key:"event_id", sortable:false},
{key:"event_name", sortable:true},
{key:"extended", sortable:true,  formatter: function (o) {
    if (event_name=type1||event_name=type4||event_name=type5) {
        editor:"dropdown", editorOptions:{dropdownOptions:eventData.extendedList}
            }
    }
}];

我知道这段代码不会工作,顺便说一下,我只是希望有一点指导。

你很接近了。在列定义中,您可以添加有关下拉编辑器的信息,就好像您总是希望它显示一样。现在,看看下面的代码示例:http://developer.yahoo.com/yui/datatable/#cellediting

看到最后一行,附加oneventshowcellleditor到任何事件,你想使编辑器弹出?这就是条件句的位置。不是要求在任何情况下都显示单元格编辑器,而是在那里放一些代码,比如:

myDataTable.subscribe("cellClickEvent", function (ev) {
     if ( ** whatever ** ) {
         this.myDataTable.onEventShowCellEditor.apply(this, arguments);
     }
});

我已经有一段时间没有使用YUI2了,所以我不记得事件侦听器接收参数的细节了。我相信你也可以使用showCellEditor()而不是onEventShowCellEditor,后者只会从事件监听器接收参数,并最终调用showCellEditor,所以你不妨跳过它。

找到了如下的破解方案

In Column Definitions:

var eventColumnDefs = [
    {key:"player_name", sortable:true, editor:"dropdown", editorOptions:{dropdownOptions:currenteam}}
];

然后在initialiseTables中:

eventDataTable.subscribe("cellClickEvent", function(ev) {
var target, column, field;
target = ev.target;
column = this.getColumn(target);
if (column.key === "player_name") {
field= this.getRecord(target).getData("team_id");
}
if (hometeamlistID == field) {
currenteam=hometeamlist;
} else if (awayteamlistID == field) {
currenteam=awayteamlist; 
}
eventDataTable._oColumnSet._aDefinitions[8].editorOptions.dropdownOptions = currenteam;
});

hometeamlist, awayteamlist, hometeamlistd和awayteamlistd是从XML字符串中提取的。我没有包括上面的代码,但其中一些包含在我的问题中:

2.5 YUI。从XML

填充下拉列表

最新更新