0

実行時にリピーター コントロールにデータをバインドする際に問題があります。aspx でデータをバインドする方法は知っていますが、実行時にそれを行う方法がわかりません。バインドする行数が不明で、各行に不明な数のアイテムがあります。この構造は、コード ビハインドでリピーター データ ソースに割り当てたリストのリストです。しかし、私が望むフォーマットを取得するには、コードビハインドの ItemDataBound イベントでこのコードの代わりに何を書くべきですか?

<asp:Repeater ID="RepeaterCategories" runat="server" OnItemCreated="RepeaterCategories_ItemCreated" OnItemDataBound="R1_ItemDataBound">
<ItemTemplate>
<asp:LinkButton ID="parent1Link" runat="server" ForeColor="#570000" CommandArgument='<% #Eval("ParentID1") %>'
Text='<% #Eval("ParentName1") %>' Font-Size="Small" Font-Underline="False" Font-Bold="True"
Font-Names="Arial" PostBackUrl='<% #CategoryId(Eval("ParentID1")) %>'>
 </asp:LinkButton>
&nbsp;
 <asp:Image ID="Image3" runat="server" Width="7px" ImageUrl="~/Img/next.png" />
&nbsp;
</ItemTemplate>
</asp:Repeater>
4

2 に答える 2

1

以下は、何をすべきかの例です。

あなたのaspxページ

<asp:Repeater ID="rpt" runat="server" OnItemDataBound="rpt_ItemDataBound">
                                <ItemTemplate>
                                    <li>
                                        <img id="imgArticle" runat="server"><p>
                                            <a href="#" id="aTitle" runat="server"></a>
                                        </p>
                                        <span class="grey">
                                            <asp:Literal ID="litCountry" runat="server"></asp:Literal>
                                            <asp:Literal ID="litTime" runat="server"></asp:Literal>
                                        </span></li>
                                </ItemTemplate>
                            </asp:Repeater>

リピーターをバインドするには:

rpt.DataSource = articles; // articles is a Generic List which has data
rpt.DataBind();

データバインドされたアイテム:

protected void rpt_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
            {
                var item = (Article)e.Item.DataItem;
                if (item.Title != null)
                    ((HtmlAnchor)e.Item.FindControl("aTitle")).InnerText = item.Title;
                if (item.Country != null)
                {
                    if (item.Country.Length > 0)
                        ((Literal)e.Item.FindControl("litCountry")).Text = item.Country + " ,";
                }
                ((Literal)e.Item.FindControl("litTime")).Text = item.CreationDate.ToString();

            }
        }
于 2013-01-15T10:05:58.043 に答える
0

配置が特に複雑な場合は、いくつかの選択肢があります。AutoGenerated 列で GridView を使用し、OnItemDataBound を使用して微調整することができます。もちろん、生の HTML を DIV に出力することもできます。

于 2013-01-15T09:58:52.107 に答える