2010-08-19 3 views
0

XMLDataSource를 사용하여 리피터 컨트롤을 사용하여 영화 목록 (Movies.aspx)을 생성했습니다. MovieDetails.aspx? movie = Matrix와 같은 쿼리 매개 변수를 통해 자세한 페이지에 연결해야합니다. MovieDetails.aspx 페이지에서 단일 영화를 렌더링하기 위해 어떤 컨트롤을 사용합니까? 가급적이면 ItemTemplate과 자체 HTML을 사용하십시오. ASP.NET 리피터 컨트롤이 QueryString 매개 변수를 통해 상세보기에 연결됩니다.

내 데이터 소스 : 나는 StackOverflow의 게시물 Send string with QueryString in Repeater Control in ASP.net을 읽고 이와 같은 중계기를 통해 내 항목을 나열

<asp:XmlDataSource ID="MoviesXmlDataSource" runat="server" 
    DataFile="~/Movies.xml" XPath="movies/movie"></asp:XmlDataSource> 

:

<asp:Repeater ID="Repeater1" runat="server" DataSourceID="MoviesXmlDataSource"> 
    <HeaderTemplate> 
     <ul class="productlist"> 
    </HeaderTemplate> 

    <ItemTemplate> 
     <li> 
      <a href="MovieDetails.aspx?movie=<%#Eval("title")%>"></a> 
      <img src="Images/<%#Eval("image") %>" /><br/> 
      <b><%#Eval("title") %></b> 
     </li> 
    </ItemTemplate> 

    <FooterTemplate> 
     </ul> 
    </FooterTemplate> 
</asp:Repeater> 

내 MovieDetail.aspx에 내가 쿼리 문자열 매개 변수로 얻을 예상했다. 그러나 XMLDataSource에서이 항목을 가져와 멋지게 렌더링하는 방법을 모르겠습니다. GridView를 사용하여이 작업을 수행 한 다음 그리드에서 클릭하는 내용에 따라 DetailsView를 렌더링하는 방법을 찾았지만 너무 추했습니다. Repeater를 사용하면 하나의 항목이 아닌 목록에 대해서만 내 자신의 HTML을 지정할 수 있습니다.

답변

0

나는 이것을 나 자신을 알아 냈다. 내 코드에서 내 XMLDataSource에 간단히 액세스 할 수 있다는 것을 알지 못했습니다. 나는 을 가지고있어 어떤 컨트롤에도 바인딩 할 수 없습니다. 여기 내 솔루션입니다 : PageLoad시

  1. , 제목 내 영화
  2. 제목을 가져 오기 매개 변수와 일치하는 경우
  3. 는 단일 노드를 가져옵니다 XmlDocument를에 url 매개 변수 영화
  4. 변환 MoviesXMLDataSource를 얻을, 설명 및 이미지 링크 및 변수로 저장
  5. aspx에서 일반 HTML을 렌더링하고 < % = 제목 %> 등을 삽입하십시오.

    protected void Page_Load(object sender, EventArgs e) 
    { 
        this.movieTitle = Request["movie"]; 
    
        string xpath = String.Format("/movies/movie[@title=\"{0}\"]", movieTitle); 
        XmlDocument doc = MoviesXmlDataSource.GetXmlDocument(); 
        XmlNode node = doc.SelectSingleNode(xpath); 
    
        this.title = node.Attributes["title"].Value; 
        this.description = node.Attributes["description"].Value; 
        this.image = node.Attributes["image"].Value; 
    } 
    

그리고 영문의

나는 정상으로 물건을 렌더링 : 결국
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent"> 

<asp:XmlDataSource ID="MoviesXmlDataSource" runat="server" 
    DataFile="~/Movies.xml" XPath="movies/movie"> 
</asp:XmlDataSource>  

<h1><%=title %></h1> 
<p> 
    <img src="<%=image %>"/><br /> 
    <%=description %> 
</p> 

</asp:Content> 

이 정말 간단했다. 나는 컨트롤을 사용하도록 혼란스러워했다.

0

리피터 제어의 전체 아이디어는 일관된 방식으로 데이터 세트를 표시하는 것입니다. 적용한 HTML은 실제로 항목 목록의 단일 항목에 대한 것입니다. 그리고 내가 너라면, 나는 table to display the items을 사용할거야. 또 다른 하나의 열, 이미지의 제목, 다른 등의 세부 사항 또는 당신은

Title 
-------- 
Image | Description Line 1 
     | Description Line 2 
     | Description Line 3 
     | Description Line 4 
-------- 

Title 
-------- 
Image | Description Line 1 
     | Description Line 2 
     | Description Line 3 
     | Description Line 4 
-------- 

방법을 사용할 수 있습니다.

좋은 영화 목록을 얻지 못하게하는 유일한 방법은 HTML (당신이 이미 알고있는)과 창의력에 대한 지식입니다! 당신의 상상력 야생 실행하자,

  • 확실히
  • 시나리오에서
  • 를 빨아)

    • 목록
    • :(
  • +0

    중계기의 목적을 이해했으며 이미 좋은 영화 목록을 보유하고 있습니다. 내 문제는 다른 페이지에 하나의 동영상을 렌더링하는 방법입니다. 기존 데이터 소스에서 단일 항목을 가져 와서 순수 HTML로 렌더링하는 방법은 무엇입니까? – danglund

    관련 문제