我正在使用YUI(YAHOO用戶界面庫)和Velocity開發一個網頁,並且我已經使用其中一列中的某些按鈕設置了一個數據表。我的問題是,當我排序任何列時,按鈕不再呈現,即顯示爲簡單的輸入字段。 (簡化)代碼的一部分這裏:YUI:在排序後不顯示數據表中的按鈕
#set($states=['valid','invalid','empty'])
var buttonsFormatter = function(elLiner, oRecord, oColumn, oData) {
elLiner.innerHTML = '';
#foreach($state in $states)
elLiner.innerHTML = elLiner.innerHTML+'<input id="${state}Button-'+oRecord.getData("id")+'"/>';
#end
};
var myColumnDefs = [
{key:"change",
label: "Actions",
formatter: buttonsFormatter,
sortable: true,
resizeable: true},
];
// Then create datasource, datatable, etc...
// $comment is the object I use to build the datasource
// So here I loop over records to instantiate the buttons
#foreach($comment in $comments_arraylist)
new YAHOO.widget.Button("validButton-"+$comment.getId(),
{label:'<img src="$content.getURI("images/gc.gif")"/>',
title:'Valid',
onclick:{ fn:makeRequest,obj:[$comment.getId(),"Valid"]}
}
);
new YAHOO.widget.Button("invalidButton-"+$comment.getId(),
{label:'<img src="$content.getURI("images/rc.gif")"/>',
title:'Invalid',
onclick:{ fn:makeRequest,obj:[$comment.getId(),"Invalid"]}
}
);
new YAHOO.widget.Button("emptyButton-"+$comment.getId(),
{label:'<img src="$content.getURI("images/close.jpg")"/>',
title:'Reset',
onclick:{ fn:makeRequest,obj:[$comment.getId(),"null"]}
}
);
#end
我也嘗試添加的格式化功能新YAHOO.widget.Button ...聲明,但沒有更多的成功。有人對我有想法嗎?我不得不提到,除了排序問題,一切正常。
感謝
亞歷克西斯
編輯:修改方案的按鈕格式化功能這種方式並不能幫助:
var buttonsFormatter = function(elLiner, oRecord, oColumn, oData) {
elLiner.innerHTML = '';
#foreach($state in $states)
elLiner.innerHTML = elLiner.innerHTML+'<input type="button" id="${state}Button-'+oRecord.getData("id")+'"/>';
#end
elLiner.innerHTML = elLiner.innerHTML+'<input type="button" id="testButton-'+oRecord.getData("id")+'"/>';
new YAHOO.widget.Button("testButton-"+oRecord.getData("id"),
{label:'<img src="$content.getURI("images/gc.gif")"/>',
title:'test',
onclick:{ fn:makeRequest,obj:[oRecord.getData("id"),"test"]}
}
);
};
如此創建 '測試' 按鈕永遠不會呈現,只是顯示爲基本的空按鈕輸入。
嗯,我無法整理出來,我只是禁用排序屬性,因爲它不是必需的。僅供參考:我也嘗試了沒有預先存在的html的創建按鈕,但無法成功將其插入格式化程序函數中:嘗試執行「... innerHtml = myButton.toString()」顯示類似「button-id254」的內容。 ..「 – Alexis 2012-04-24 08:37:38