2013-05-10 45 views
0

我目前正在编辑使用YUI 2.5的应用程序。我以前没有用过,可以使用一些帮助。YUI datatable条件下拉编辑器

我希望能够使用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} 
      } 
    } 
}]; 

我知道这段代码不起作用,顺便说一下,我只会欣赏一些指导。

回答

0

实测值哈克溶液如下

在列定义:

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,hometeamlistID和awayteamlistID是从XML拉串。我没有将这些代码之上,但有一些是包含在这里我的问题:

YUI 2.5. Populating a dropdown from XML

0

你就近了。在列定义中,您可以添加关于下拉编辑器的信息,就像您一直希望显示它一样。现在,转到此处的代码示例:http://developer.yahoo.com/yui/datatable/#cellediting

请参阅最后一行,它将onEventShowCellEditor附加到您希望使编辑器弹出的任何事件?那就是你放置条件的地方。而不是仅仅要求,以显示在任何情况下的单元格编辑器,你把一些代码在那里,就像:

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

我还没有做YUI2相当长的一段时间,所以我现在不记得的细节事件监听器收到的参数。我相信你也可以使用showCellEditor()而不是onEventShowCellEditor,后者只会按照从事件监听器接收到的参数进行处理,并最终调用showCellEditor,所以不妨跳过它。

+0

好吧,我需要的是一个更清楚一点什么,我希望发生的。 每行都有一个唯一的event_id和一个可以来自两个团队之一的team_id。如果在数据表中选择的行的team_id等于team 1(例如),我需要下拉列表才能显示来自该特定团队的玩家名称。每个团队的玩家名称都存储在他们自己的阵列中。 如何初始化列定义中的下拉列表?需要哪些参数来更改该列下拉列表的内容? – 2013-05-15 14:42:05