2011-09-24 5 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); 
} 
관련 문제