2011-02-16 4 views
1

몇 개의 패널이있는 리피터가 있습니다. <asp:Panel>의 onmouseover 속성이 없음을 발견했습니다. 내가를 Page_Load에서 호출하여 패널에 속성을 추가 할 수 있습니다 읽었습니다 :<asp : Repeater>의 <asp:Panel>에 onmouseover 특성 추가

PanelID.Attributes.Add("onmouseover", "Script to Run"); 

문제는 내가 리피터에 오전, 그리고 PanelID는 ContentPlaceHolder_ctl01_myID_0처럼 asp.net에 의해 생성되는 그래서뿐만 아니라 알아낼 수는 없지만 VS2010을 올바른 대상으로 인식하지 못하고 오류를 던지고 플러스를 모든 항목에 첨부해야하므로 for 또는 foreach를 사용해야하지만 잘 모릅니다. 반복 할 대상. 를 Page_Load의 이벤트 핸들러에서 C#으로이 작업을 수행하는

foreach(childcontrol in Repeater.ChildControlsISpecificallyNeedPossiblyIdentifiedBySomeID) 
{ 
childcontrol.Attributes.Add("onmouseover", "Script to Run"); 
} 

같은 방법이 있나요? 패널에서 클라이언트 측 onload, onmouseclick 및 onmouseout도 실행하려고하므로 이러한 속성도 첨부하려고합니다.

답변

0

에 핸들러, 당신은 자바 스크립트에서 자바 스크립트 이벤트 리스너 을 첨부 할 수 있습니다.

패널에게 CSS 클래스 보내기

$(".panel").mouseover(functionToRun); 

당신이 jQuery를 사용하지 않는 경우 'jQuery를 사용

<asp:Panel CssClass="panel"></asp:Panel> 

, 구문은 다음과 같이 이벤트 핸들러가 될 바인딩을 조금 더 많은 코드가 필요 하겠지만, 당신이 아이디어를 얻을 것이라고 확신합니다.

0

패널이 클라이언트 측에서 div으로 표시됩니다, 당신은 항상 자바 스크립트에서 this를 사용하면 트리거 패널에 참조하고 그러나 경우 SomePanel.ClientID를 사용하여

모든 이벤트를 생각하지 않을 수 클라이언트 측 ID를 얻을 수 있습니다 대신 ASP.NET을 사용하여 onmouseover -attribute 인라인을 지정하는 상자 밖에서 생각하는 각 요소

0

리피터 onitemdatabound 이벤트에서 패널에 속성을 추가하고이 컨트롤에서 컨트롤을 찾으십시오.이 이벤트는 행이 바인딩 될 때마다 호출되므로 foreach를 호출 할 필요가 없습니다.

0

ItemDataBound 이벤트를 사용해보십시오.

protected void myRepeater_ItemDataBound(object source, RepeaterCommandEventArgs e) { 
    if(e.Item.ItemType == ListItemType.Item){ 
     Panel pnl = (Panel)e.Item.FindControl("myPanel"); 
     pnl.Attributes.Add"onMouseOver", "yourFnctionName()"); 
    } 
} 
관련 문제