2014-07-04 3 views
2

내 소스 페이지 :C#에서 데이터 목록 항목을 검색하는 방법은 무엇입니까?

<asp:DataList ID="datalist" RepeatColumns="6" runat="server" > 
    <ItemTemplate> 
    <div class="rating"> 
    <div> 
    <cc1:Rating ID="Rating1" AutoPostBack="true" OnChanged= "rt_chnaged" runat="server" StarCssClass="ratingstar" RatingAlign="Horizontal" WaitingStarCssClass="ratingSaved" EmptyStarCssClass="ratingEmpty" FilledStarCssClass="ratingFilled"> 
       </cc1:Rating> </div> 
    <asp:Label runat="server" ID="Label2" Text='<%# Eval("moviename") %>' Visible="true"></asp:Label> 
    </div> 
    </ItemTemplate></asp:DataList> 

내 코드 뒤에 :

여기
public void rt_chnaged(object sender, AjaxControlToolkit.RatingEventArgs e) 
{ 
    Label lbl = null; 
    foreach (DataListItem li in datalist.Items) 
    { 
     lbl = li.FindControl("Label2") as Label; 
    } 
    Label3.Text = lbl.Text; 
} 

내 질문은 간단하지만, 나는이 문제를 해결하기 위해 시간을 많이 소비하여 더 많은 어려움을 겪고 있어요.

이 글에서는 데이터베이스의 모든 것을 묶었습니다. 정확히 내가 원하는 것은 각각의 등급 막대를 클릭 할 때마다 해당 영화 이름을 라벨 외부, 즉 Label3에 표시해야한다는 것입니다. 예를 들어

:

가 변압기 데 고려에서 moviename 열에서 원숭이와 Mankatha (데이터베이스)의 행성입니다. 그래서 여기에 내 출력 3 등급 막대 3 레이블 것입니다. 그래서 지금 내가 원하는 것은 label2 (datalist 내부)에 영화 이름을 label3 (데이터리스트 외부)에 표시해야합니다.

여기서는 (몇 줄 전에 언급 했었지만) Mankatha 만, 각각 때문에. 나는 그 이유를 이해할 수 있지만 해결책을 찾으려 애쓰는 중이다.

문제를 해결하는 데 도움을 주시기 바랍니다. 미리 감사드립니다.

답변

2

컨트롤에 NamingContainer을 사용할 수 있습니다 (리피터 또는 gridview와 같은 다른 데이터 바인딩 된 웹 컨트롤에서도 작동 함).

public void rt_chnaged(object sender, AjaxControlToolkit.RatingEventArgs e) 
{ 
    Rating rating = (Rating) sender; 
    DataListItem item = (DataListItem) rating.NamingContainer; 
    Label lbl = (Label) item.FindControl("Label2"); 
    Label3.Text = lbl.Text; 
} 
:

sender

항상이 경우, Rating 제어를 이벤트를 발생시킨 컨트롤입니다