交替项目样式

时间:2008-10-22 15:10:58

标签: asp.net

我真的很想在GridView上有一个AlternatingItemTemplate,但它提供的只是一个AlternatingItemStyle。在我的网格中,每两列行(在表格布局中)在第一列中有一个图像,在第二列中有一个描述。我想让图像和描述的定位在备用行上交替。

我该怎么做?

4 个答案:

答案 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模板的控件。

相关问题