2009-05-18 5 views
2

Приветствия!Пропуск элементов во время привязки данных

У меня есть элемент управления ретранслятора, в котором используется элемент управления XmlDataSource.

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

В некоторых случаях, я хотел бы «пропустить» в «В» пункта при связывании так, чтобы оно не отображается. Есть ли способ во время события DataBinding, чтобы я мог пропустить привязку элемента «B», чтобы он не отображался?

ответ

3

Вы можете исследовать текущее DataItem в методе OnItemDataBound() ретранслятора и пропустить обработку этого пункта, если он соответствует вашим критериям

+0

Я думал, что, возможно, самый лучший ответ, вы бы просто переопределить OnItemDataBound и выбрать опустить вызов его базового метода, когда вы найдете элемент, который хотите опустить? –

+2

Как выполняется «обработка пропусков»? – Bullines

+3

Думаю, я ответил на свой вопрос: установив видимость DataItem на false. – Bullines

3

Я бы рекомендовал изменить XPath с «Root» на то, что будет включать только элементы, которые вы хотите связать, если вы используете XmlDataSource.

Смежные вопросы