0

我有以下代码。它按原样工作,但是... 我不会总是在 RSS 提要中有偶数​​个项目 所以,在表格的末尾,我可能在最后一行只有一个表格单元格。那么,有没有办法计算 ItemTemplates 和 AlternatingItemTemplate 的数量,所以如果它是一个奇数,我可以添加另一个单元格<td>&nbsp;</td></tr>并关闭表格行?

<asp:XmlDataSource ID="SomeFeed" DataFile="TestSomeRSS.xml" XPath="rss/channel/item" runat="server"></asp:XmlDataSource>

<asp:ListView ID="SomeFeedScroller" DataSourceID="SomeFeed" ItemPlaceholderID="SomePlcID" runat="server">

<LayoutTemplate>

<table id="ListingsTable" cellpadding="0" cellspacing="0" align="center">
    <asp:PlaceHolder ID="SomePlcID" runat="server"></asp:PlaceHolder>
</table>

</LayoutTemplate>

<ItemTemplate>
    <tr style="vertical-align:top;">
    <td class="bnotes" style="width:325px;padding:5px;">
        <%# XPath("title")%><br />
        <%# XPath("description")%><br />
    </td>
</ItemTemplate>

<AlternatingItemTemplate>
    <td class="bnotes" style="width:325px;padding:5px;">
        <%# XPath("title")%><br />
        <%# XPath("description")%><br />
    </td>
    </tr>
</AlternatingItemTemplate>

</asp:ListView>

在此先感谢您的帮助。

4

1 回答 1

1

我不确定你在问什么,但为什么不在 ItemTemplate 和 AlternatingItemTemplate 中放一个完整的行,如下所示:

<ItemTemplate>
    <tr style="vertical-align:top;">
        <td class="bnotes" style="width:325px;padding:5px;">         
            <%# XPath("title")%><br />         
            <%# XPath("description")%><br />     
        </td>
    </tr> 
</ItemTemplate>  
<AlternatingItemTemplate>
    <tr style="vertical-align:top;">     
        <td class="bnotes" style="width:325px;padding:5px;">         
            <%# XPath("title")%><br />         
            <%# XPath("description")%><br />     
        </td>     
    </tr> 
</AlternatingItemTemplate>

这样您就不必自己弄清楚 - 只需让控件自己呈现。

编辑添加

再次查看您发布的代码,看起来您可能一直在尝试使用一排交替的单元格样式。我认为您误解了 ItemTemplate 和 AlternatingItemTemplates 的意图;它们通常处理给定记录的字段(列)。

在这种情况下,您将在 ItemTemplate 中拥有第一个 RSS 提要项目,然后在 AlternateItemTemplate 中拥有第二个 RSS 提要项目(即另一行),然后在 ItemTemplate 中拥有第三个 RSS 提要项目,依此类推。

我希望这会有所帮助 - 如果我误解了你想要做的事情,请告诉我。

第二次编辑

根据评论中发布的示例布局,我认为DataList 类会是一个更好的选择,因为您可以轻松地指定多个列(使用RepeatColumns属性)。像这样的东西:

<asp:XmlDataSource ID="SomeFeed" DataFile="TestSomeRSS.xml" XPath="rss/channel/item" runat="server">
</asp:XmlDataSource>

<asp:DataList ID="SomeFeedScroller" DataSourceID="SomeFeed" 
              RepeatColumns="2" RepeatDirection="Horizontal" 
              RepeatLayout="Table" runat="server">
    <ItemStyle CssClass="bnotes" Vertical-Align="top" Width="325px" />
    <AlternatingItemStyle CssClass="bnotes" vertical-Align="top" Width="325px" />
    <ItemTemplate>
        <%# XPath("title")%><br />
        <%# XPath("description")%>
    </ItemTemplate>
    <AlternatingItemTemplate>
        <%# XPath("title")%><br />
        <%# XPath("description")%>
    </AlternatingItemTemplate>
</asp:DataList>

以上内容未经测试,但总体思路是使格式尽可能接近 ListView 中的内容。

另一种可能的方法可能类似于在 Repeater 控件中有多个列的线程: Multiple columns in a repeater

DataList 控件支持编辑、选择、更新等,如 ListView。中继器控件没有。

于 2011-09-03T00:44:48.173 回答