2011-09-24 39 views
0

我正在使用YUI2 DataTable。 表中的某些行有一个图标按钮,点击该按钮将弹出该行的其他详细信息。YUI DataTable按钮事件过滤后丢失

我做如下定义而它与附加信息显示面板:

MyContainer.panel2 = new YAHOO.widget.Panel("popupPanel2", 
    { width:"650px", visible:false, constraintoviewport:true, overflow:"auto" }); 
MyContainer.panel2.render(); 
YAHOO.util.Event.addListener("showButton2", "click", 
     MyContainer.panel2.show, MyContainer.panel2, true); 

所以,一切与效果很好。然后我添加了一个按钮,点击时可以过滤出一些行。

MyContainer.oPushButton1.onclick = function onButtonClickp(p_oEvent) 
{ 
var filter_val = "xxx"; 
    myDataTable.getDataSource().sendRequest(filter_val, 
     {success: myDataTable.onDataReturnInitializeTable},myDataTable); 
} 

这将过滤并重绘表格。但在这样做后,应该弹出面板的其余行上的按钮不再有效。 当我点击按钮时没有任何反应。 我确定我做错了什么,但我不知道是什么。具有正确ID的按钮和面板在页面上似乎仍然可用。

难道我有办法在数据表重绘后重新启用click事件的监听器吗?我不确定在哪里寻找尝试调试失败的侦听器。

回答

0

我通过在重置数据源的数据后再次调用addListener来得到这个工作。

MyContainer.oPushButton1.onclick = function onButtonClickp(p_oEvent) 
{ 
    var filter_val = "xxx"; 
    myDataTable.getDataSource().sendRequest(filter_val, 
     {success: myDataTable.onDataReturnInitializeTable},myDataTable); 
    YAHOO.util.Event.addListener("showButton2", "click", 
    MyContainer.panel2.show, MyContainer.panel2, true); 
}