同一个ListView LayoutTemplate中的两个项占位符?

时间:2011-10-26 13:58:28

标签: asp.net listview

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

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

显然这不起作用,但沿着这些方向可能有什么用?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分: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是最轻的。