我真的很想在GridView上有一个AlternatingItemTemplate,但它提供的只是一个AlternatingItemStyle。在我的网格中,每两列行(在表格布局中)在第一列中有一个图像,在第二列中有一个描述。我想让图像和描述的定位在备用行上交替。
我该怎么做?
答案 0 :(得分:3)
这是一种方式:
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
{
}
}
答案 1 :(得分:2)
您可以考虑使用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"
这可以让你改变主意而无需重新编码事件处理程序等。
答案 2 :(得分:1)
我认为这样可行:
<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>
答案 3 :(得分:0)
您需要处理数据绑定事件以尝试确定它是项目还是交替项目,或者切换到使用支持Item和AlternatingItem模板的控件。