2009-05-18 75 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”更改为仅包含要绑定的项目的内容。

相关问题