あなたの質問の私の理解では、画像を表以外の形式で出力したいと考えています。
DataList
コントロールには、生活を楽にする機能が組み込まれています。すなわち、RepeatColumns
、およびRepeatLayout
。@Hanletの答えはこれを非常によく説明しています。あなたの質問に対する私の理解から、彼の答えの問題は、彼が表として出力する方法しか示していないことです。前に説明したように、これはあなたが探しているものではありません。は、別の方法で出力を表示DataList
できRepeatLayout="Flow"
ます。このアプローチの潜在的な問題は、レイアウトが固定されていることです。表示方法を変更することはできません。<span>
と<br />
タグを使用してデータを表示します。これは CSS を使用してスタイルを設定できますが、それでも多少の制限があります。Flow
代わりに選択した場合、Hanletの回答からの出力は次のようになりますTable
:
<div>
<span id="DataList1">
<span>
<img src="http://www.google.com/images/srpr/logo4w.png" />
</span>
<span>
<img src="http://www.google.com/images/srpr/logo4w.png" />
</span>
<span>
<img src="http://www.google.com/images/srpr/logo4w.png" />
</span>
<br />
<span>
<img src="http://www.google.com/images/srpr/logo4w.png" />
</span>
<span>
<img src="http://www.google.com/images/srpr/logo4w.png" />
</span>
<span>
<img src="http://www.google.com/images/srpr/logo4w.png" />
</span>
</span>
</div>
Repeater
そうは言っても、が提供するレイアウトを無制限に制御したい場合は、これを行う方法があります。2つを使用Repeaters
:
aspx コード:
<asp:Repeater ID="rptRows" runat="server" OnItemDataBound="rptRows_ItemDataBound">
<ItemTemplate>
<asp:Repeater ID="rptItems" runat="server">
<ItemTemplate>
<img width="30px" src="<%#Eval("url") %>" />
</ItemTemplate>
</asp:Repeater>
</br>
</ItemTemplate>
</asp:Repeater>
コード ビハインド:
public class ImageEntity
{
public string url { get; set; }
}
public partial class DataListSample : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
List<Tuple<ImageEntity, ImageEntity, ImageEntity>> listTuples = new List<Tuple<ImageEntity, ImageEntity, ImageEntity>>();
listTuples.Add(new Tuple<ImageEntity, ImageEntity, ImageEntity>(new ImageEntity() { url = "http://www.google.com/images/srpr/logo4w.png" }, new ImageEntity() { url = "http://www.google.com/images/srpr/logo4w.png" }, new ImageEntity() { url = "http://www.google.com/images/srpr/logo4w.png" }));
listTuples.Add(new Tuple<ImageEntity, ImageEntity, ImageEntity>(new ImageEntity() { url = "http://www.google.com/images/srpr/logo4w.png" }, new ImageEntity() { url = "http://www.google.com/images/srpr/logo4w.png" }, new ImageEntity() { url = "http://www.google.com/images/srpr/logo4w.png" }));
listTuples.Add(new Tuple<ImageEntity, ImageEntity, ImageEntity>(new ImageEntity() { url = "http://www.google.com/images/srpr/logo4w.png" }, new ImageEntity() { url = "http://www.google.com/images/srpr/logo4w.png" }, new ImageEntity() { url = "http://www.google.com/images/srpr/logo4w.png" }));
listTuples.Add(new Tuple<ImageEntity, ImageEntity, ImageEntity>(new ImageEntity() { url = "http://www.google.com/images/srpr/logo4w.png" }, new ImageEntity() { url = "http://www.google.com/images/srpr/logo4w.png" }, new ImageEntity() { url = "http://www.google.com/images/srpr/logo4w.png" }));
this.rptRows.DataSource = listTuples;
this.rptRows.DataBind();
}
protected void rptRows_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
{
Repeater rptItems = (Repeater)e.Item.FindControl("rptItems");
Tuple<ImageEntity, ImageEntity, ImageEntity> items = (Tuple<ImageEntity, ImageEntity, ImageEntity>)e.Item.DataItem;
rptItems.DataSource = new List<ImageEntity>() { items.Item1, items.Item2, items.Item3 };
rptItems.DataBind();
}
}
}
基本的に、ここで行っているのは、URL のリストを List of に分割することですTuples
。の長さはList
、外側の「行」の数ですRepeater
。のエンティティの数はTuple
、内側の Repeater の「列」の数です。
Repeater
アイテムをアウター( )にバインドするたびrptRows_ItemDataBound
に、インナーのデータソースをRepeater
新しく生成された URL エンティティのリスト( ) に設定しますImageEntity
。
これが十分に明確であるかどうか教えてください。不明な点があれば喜んで拡大して明確にします。