0

次のコードがあります。このままでも機能しますが... RSS フィードに常に偶数のアイテムがあるとは限りません。そのため、テーブルの最後に、最後の行にテーブル セルが 1 つしかない場合があります。では、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>

そうすれば、自分でそれを理解する必要はありません。コントロールがレンダリングするだけです。

追加するために編集

投稿されたコードをもう一度見ると、1 行のセル スタイルを交互に試行しているように見えます。ItemTemplate と AlternatingItemTemplates の意図を誤解していると思います。通常、特定のレコードのフィールド (列) を扱います。

この場合、ItemTemplate に最初の RSS フィード アイテム、次に AlternateItemTemplate (つまり別の行) に 2 番目の RSS フィード アイテム、ItemTemplate に 3 番目の RSS フィード アイテム、というように続きます。

これがお役に立てば幸いです。あなたがやろうとしていることを誤解している場合はお知らせください。

2回目の編集

コメントに投稿されたサンプル レイアウトに基づいて、 (プロパティを使用して) 複数の列を簡単に指定できるので、 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 にあったものに近づけることでした。

もう 1 つの考えられるアプローチは、Repeater コントロールに複数の列を持つことに関するこのスレッドに似たものかもしれません: Multiple columns in a repeater

DataList コントロールは、ListView と同様に、編集、選択、更新などをサポートします。Repeater コントロールにはありません。

于 2011-09-03T00:44:48.173 に答える