2011-12-19 4 views
0

DashboardPage 개체 컬렉션에 바인딩 된 다음과 같은 리피터 컨트롤이 있습니다. DashboardPage의 속성은 이며 이름은 Pagerumber입니다.개체 속성에 대한 컨트롤의 ID 속성 바인딩

<asp:Repeater ID="reportPages" runat="server">   
     <ItemTemplate> 
     <asp:ImageButton runat="server" onclick="ImageButton_Click" 
     ImageUrl="<%# GetImagePath(Container.DataItem) %>" 
     onmouseover="<%# GetMouseOverEventString(Container.DataItem) %>" 
     onmouseout="<%# GetMouseOutEventString(Container.DataItem) %>" 
     /> 
     </ItemTemplate> 

     <SeparatorTemplate> 
     &nbsp;&nbsp; 
     </SeparatorTemplate> 
    </asp:Repeater> 

나는 DashboardPage 객체,이

ID="<%# Eval('Name') %>" 

같은 재산의 이름을 지정하여 ImageButton의 ID 속성을 바인딩 할 그러나 예외가 발생합니다 :

컨트롤의 ID 속성 수 태그의 ID 속성과 간단한 값을 사용하여 설정해야합니다.

ID를 사용하여 이미지를 변경하는 클라이언트 측 스크립트가 있기 때문에 이미지의 ID 속성이 필요합니다. 이 문제를 해결할 방법이 있습니까? 답변

에 대한

감사합니다 감사합니다 Gagik Kyurkchyan 당신은 당신이 동적으로 자바 스크립트를 사용하여 이미지를 참조하는 다른 방법을 찾을 필요에 서버 컨트롤의 ID를 설정할 수 없습니다 발견 이후

+0

이유 CssClass 또는 클래스 또는 사용자 정의를 사용하지 왜 이미지 버튼을 – BizApps

+0

에 ID = YourIMageID을하지 않는 것이 그 것이다 ID 대신 속성, 참고 : 리피터 항목에 ID를 사용하는 경우, ID에 접두어는 컨테이너의 ID와 레벨에 따라 밑줄이 붙습니다. – jerjer

+0

대신 usin g databind #, = 사용하려고 했습니까? <% = 평가 ('이름') %> – TheGeekYouNeed

답변

1

. 내가 생각할 수있는 세 가지 방법이 있습니다.

  1. 컨트롤의 CssClass 속성을 설정하고 대신 사용하십시오. DOM을 사용하는 ID보다는 클래스에 의한 컨트롤을 찾는 것이 다소 비효율적이지만 실제 세계에서는 무시해도 될 것입니다.

  2. 이미지를 표준 DIV으로 감습니다. 컨테이너 ID를 DIV으로 설정하십시오. 그런 다음 $("#divid img")...

  3. 은 오히려 asp:Image 제어보다 (NO runat="server" 포함) 표준 <img> 태그를 사용하여 이동 jQuery를 같은 것을 사용할 수 있습니다. 그런 다음 문제없이 ID를 설정할 수 있습니다.

+0

답변 해 주셔서 감사합니다! – kyurkchyan

0

ID를 설정하는 데 ItemDataBound를 사용할 수 있습니다.

코드 숨김 :

protected void myRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e) 
{ 
    var textbox = e.Item.FindControl("myTextBox"); 
    textbox.ID = "myTextBox" + (e.name).toString(); /*ToString() method can be unnecessary in some cases.*/ 
} 

리피터 :

<asp:Repeater ID="myRepeater" runat="server" OnItemDataBound="BehaviorCustomizeRepeater_ItemDataBound"> 
/*other stuffs*/ 
</asp:Repeater> 
관련 문제