2008-10-22 29 views
0

我真的很喜欢在GridView上有一个AlternatingItemTemplate,但它提供的是一个AlternatingItemStyle。在我的网格中,每两列行(表格布局)在第一列中都有一个图像,第二列中有一个描述。我希望图像和说明的位置交替排列。交替项目样式

我该怎么做?

回答

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 /中继器:

ItemStyle = "MyItemStyle" 
AlternatingItemStyle = "MyAltItemStyle" 

这将让你改变你[R头脑,而无需重新编写的事件处理程序等

+0

我喜欢这个。我稍后再试一试。 – ProfK 2008-10-23 15:23:54

0

您将需要处理数据绑定事件以尝试确定它是项目还是交替项目,或者切换到使用支持Item和AlternatingItem模板的控件。

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

我认为这会工作:

<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> 

显然,评估和演示图像将真正需要的是一个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>