2011-10-26 40 views
0

我在一个实例中使用ListView,我想在同一个LayoutTemplate中有两个Item占位符。这可能吗?我的用例如下。我使用的是jQuery选项卡,并希望根据绑定中的数据输出选项卡。因此,例如,这就是我想要的:两个项目占位符在同一个ListView LayoutTemplate中?

<div id="tabcontainer"> 
    <ul> 
    <li>Tab 1 name</li> 
    <li>Tab 2 name</li> 
    .... 
    </ul> 
    <div> 
    Tab 1 contents 
    </div> 
    <div> 
    Tab 2 contents 
    </div> 
    ... 
</div> 

所以基本上每个选项卡将是一个项目我的数据绑定,但我需要有LayoutTemplate模板内两个不同的项目模板,以便像这样我猜:

<asp:ListView runat="server" ID="ForecastListView"> 
    <LayoutTemplate> 
    <div id="container"> 
     <ul> 
     <asp:Placeholder runat="server" ID="itemPlaceholder1" /> 
     </ul> 
    </div> 
    <asp:Placeholder runat="server" ID="itemPlaceholder2" /> 
    </LayoutTemplate> 
    <ItemTemplate1> 
    <%# Eval("TabName") %> 
    </ItemTemplate1> 
    <ItemTemplate2> 
    <div> 
     <%# Eval("TableContents") %> 
    </div> 
    </ItemTemplate2> 
</asp:ListView> 

显然这不起作用,但沿着这些线可能是什么?

回答

1

似乎更容易定义两个ListView - 每个逻辑jQuery选项卡一个。 ListViews将提供相同的DataSource,但会以不同的方式呈现数据。

+0

好的,那有效。谢谢。 – Kyle

0

通过描述的用例,更好的决定将是具有相同数据源的2个中继器。

<div id="tabcontainer"> 
    <ul> 
     <asp:Repeater runat="server" ID="ForecastListView"> 
      <ItemTemplate> 
       <li> 
        <%# Eval("TabName") %></li> 
      </ItemTemplate> 
     </asp:Repeater> 
    </ul> 
    <asp:Repeater runat="server" ID="ListView1"> 
     <ItemTemplate> 
      <div> 
       <%# Eval("TableContents") %> 
      </div> 
     </ItemTemplate> 
    </asp:Repeater> 
</div> 

为什么不是ListView? 您不需要任何高级功能,如分页或页眉或页脚。 Reater是最轻的。

相关问题