ASP.net C# 转发器多个对象
本文关键字:对象 转发器 net ASP | 更新日期: 2023-09-27 18:31:48
我有以下情况:
<asp:Repeater ID="myRepeater" runat="server">
<ItemTemplate>
<asp:ImageButton OnClick="imgSearchResult_Click" BackColor="#333333" ID="imgSearchResult" height="32" width="32" runat="server" ToolTip='<%# Eval("ToolTip") %>' ImageUrl='<%# Eval("ImageUrl") %>'/>
<asp:Label ID="labValue" Text='<%# Eval("Text") %>' runat="server" Width="32" />
</ItemTemplate>
</asp:Repeater>
转发器包含图像按钮和标签对象。如果我只使用一个对象,我可以通过绑定从代码隐藏添加它们:
Repeater.DataSource = imageList;
Repeater.DataBind();
或
Repeater.DataSource = labelList;
Repeater.DataBind();
如何将两者添加到一个中继器中?
如果你在一个中继器中需要它们,它们在数据的"视图"(松散使用的术语)中是相关的。那么,为什么不将该视图变成包含图像和标签的显式对象呢?命名或匿名:
return Enumerable.Zip(imageList, labellist, (image, label) => new {image, label})
或者,您可以只传递图像并按索引查询标签:
<asp:Repeater ID="myRepeater" runat="server">
<ItemTemplate>
<asp:Label ID="labValue" Text='<%# GetLabelText(Container.ItemIndex) %>' runat="server" Width="32" />
</ItemTemplate>
</asp:Repeater>
这需要一个公共GetLabelText(index)
方法,并且可能需要代码隐藏中的额外状态,以使 ImageList 可用于该方法。不是很好,但它可以完成工作。