【发布时间】:2008-10-23 02:48:07
【问题描述】:
我实际上很想在 GridView 上有一个 AlternatingItemTemplate,但它提供的只是一个 AlternatingItemStyle。在我的网格中,每两列行(在表格布局中)在第一列中有一个图像,在第二列中有一个描述。我希望图像和描述的位置在交替行上交替出现。
我该怎么做?
【问题讨论】:
标签: asp.net
我实际上很想在 GridView 上有一个 AlternatingItemTemplate,但它提供的只是一个 AlternatingItemStyle。在我的网格中,每两列行(在表格布局中)在第一列中有一个图像,在第二列中有一个描述。我希望图像和描述的位置在交替行上交替出现。
我该怎么做?
【问题讨论】:
标签: asp.net
这是一种方法:
ASP.NET:
<asp:Repeater runat="server" ID="Repeater1" OnItemDataBound="Repeater1_ItemDataBound" />
ItemDataBound 事件:
public void Repeater1_ItemDataBound(Object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.AlternatingItem)
{
// e.Item is an alternating item
}
else
{
}
}
【讨论】:
您可能会考虑使用 AlternatingItemStyle 来管理它以获得乐趣。
使用 1 列或中继器:
物品模板:
<div class="MyImage"><img src="" /></div>
<div class="MyDescription">Blah...Blah...</div>
CSS:
.MyItemStyle .MyImage {width:49%; float:left;}
.MyItemStyle .MyDescription {width:49%; float:right;}
.MyAltItemStyle .MyImage {width:49%; float:right;}
.MyAltItemStyle .MyDescription {width:49%; float:left;}
应用于 Gridview/Repeater:
ItemStyle = "MyItemStyle"
AlternatingItemStyle = "MyAltItemStyle"
这会让您改变主意,而无需重新编码事件处理程序等。
【讨论】:
我认为这会起作用:
<asp:GridView>
<Columns>
<asp:TemplateColumn>
<%# Container.DataItemIndex % 2 == 0 ? Eval("Image") : Eval("Desc") %>
</asp:TemplateColumn>
<asp:TemplateColumn>
<%# Container.DataItemIndex % 2 == 0 ? Eval("Desc") : Eval("Image") %>
</asp:TemplateColumn>
</Columns>
</asp:GridView>
显然,Eval 图像确实需要是一个 img 标签,或者您可以替换一些用户控件等。重要的是 Container.DataItemIndex % 2。您甚至可以将它用作可见的数据绑定。
<asp:GridView>
<Columns>
<asp:TemplateColumn>
<uc:Image Data='<%# Eval("Image") %>'
Visible='<%# Container.DataItemIndex % 2 == 0 %>' />
<uc:Description Data='<%# Eval("Description") %>'
Visible='<%# Container.DataItemIndex % 2 != 0 %>' />
</asp:TemplateColumn>
<asp:TemplateColumn>
<uc:Image Data='<%# Eval("Image") %>'
Visible='<%# Container.DataItemIndex % 2 != 0 %>' />
<uc:Description Data='<%# Eval("Description") %>'
Visible='<%# Container.DataItemIndex % 2 == 0 %>' />
</asp:TemplateColumn>
</Columns>
</asp:GridView>
【讨论】:
您将需要处理数据绑定事件以尝试确定它是项目还是交替项目,或者切换到使用支持 Item 和 AlternatingItem 模板的控件。
【讨论】: