2009-05-18 37 views
2

問候!數據綁定時跳過項目

我有一個使用XmlDataSource控件的Repeater控件。

<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看起來是這樣的:

<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> 

在某些情況下,我想結合時,使其不被顯示爲「跳過」的「B」項。 DataBinding事件中有沒有辦法可以跳過「B」項的綁定,以便它不會被顯示?

回答

3

你可以調查中繼器的OnItemDataBound()方法,當前的DataItem和跳過處理該項目是否符合您的標準

+0

我在想,可能最好的答案,你只覆蓋OnItemDataBound和選擇當你找到一個你想省略的項目時忽略它的基本方法? – 2009-05-18 00:44:12

3

如果您使用的是XmlDataSource,我建議將XPath從「Root」更改爲僅包含要綁定的項目的內容。