2013-05-10 112 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