2009-05-18 7 views
2

인사말!데이터 바인딩 중 항목 건너 뛰기

XmlDataSource 컨트롤을 사용하는 Repeater 컨트롤이 있습니다. 나는 그것이 표시되지 않도록 결합 할 때 "B"항목을 "생략"하고 싶은, 어떤 경우에는

<Root> 
    <Items> 
     <Item>A</Item> 
     <Item>B</Item> 
     <Item>C</Item> 
     <Item>D</Item> 
    </Items> 
    <Things> 
     <Thing>1</Thing> 
     <Thing>2</Thing> 
     <Thing>3</Thing> 
    </Things> 
</Root> 

:

<asp:FormView id="myFormView" runat="server" DataSourceID="myXmlDataSource"> 
    <ItemTemplate> 
      <span>Items</span> 
     <asp:Repeater id="myRepeater1" runat="server" DataSource='<%# XPathSelect("Items/*")%>'> 
      <HeaderTemplate> 
       <ul> 
      </HeaderTemplate> 
      <ItemTemplate> 
       <li><%# XPath("text()")%></li> 
      </ItemTemplate> 
      <FooterTemplate> 
       </ul>    
      </FooterTemplate> 
     </asp:Repeater> 
     <span>Things</span> 
     <asp:Repeater id="myRepeater2" runat="server" DataSource='<%# XPathSelect("Things/*")%>'> 
      <HeaderTemplate> 
       <ul> 
      </HeaderTemplate> 
      <ItemTemplate> 
       <li><%# XPath("text()")%></li> 
      </ItemTemplate> 
      <FooterTemplate> 
       </ul>    
      </FooterTemplate> 
     </asp:Repeater> 
    </ItemTemplate> 
</asp:FormView>   
<asp:XmlDataSource ID="myXmlDataSource" XPath="Root" EnableCaching="false" runat="server" /> 

XML은 다음과 같이 보입니다. DataBinding 이벤트 중에 표시되지 않도록 "B"항목의 바인딩을 건너 뛸 수있는 방법이 있습니까?

답변

3

당신은 중계기의 OnItemDataBound() 메소드에서 현재있는 DataItem을 조사하고 그것이 당신의 기준에 일치하는 경우 해당 항목을 처리 건너 뛸 수

+0

나는, 그 수있는 가장 좋은 대답을 생각하면 그냥 OnItemDataBound을 무시하고 선택할 것 생략하려는 항목을 찾으면 기본 메소드를 생략합니다. –

+2

"건너 뛰기 처리"는 어떻게 완료됩니까? – Bullines

+3

DataItem의 가시성을 false로 설정하여 내 자신의 질문에 대답했다고 생각합니다. – Bullines

3

XPath를 "루트"에서 XmlDataSource를 사용하는 경우 바인딩하려는 항목 만 포함하는 것으로 변경하는 것이 좋습니다.