asp:DataList交替行样式

时间:2013-11-19 19:54:14

标签: c# asp.net datalist

我有以下数据列表:

<asp:DataList ID="DataList1" runat="server" DataKeyField="DocumentID" >
    <HeaderTemplate> 
   Name        </td>
   <td>       header 2       </td>
   <td>       header 3       </td>
   <td>       header 4       </td>
   <td>       viewed        </HeaderTemplate>

 <ItemTemplate>    
   <a href="#" id="doc_<%# Eval("DocumentID") %>" class="docPreview">
    <%# Eval("FileName")%>
   </a>
   </td>
   <td><asp:Label ID="Item2Label" runat="server" Text='<%# Eval("Item2")%>' /></td>
   <td><asp:Label ID="Item3Label" runat="server" Text='<%# Eval("Item3")%>' /></td>
   <td><asp:Label ID="Item4Label" runat="server" Text='<%# Eval("Item4")%>' /></td>
   <td>           
   <asp:CheckBox ID="isViewed" runat="server" Text='<%# Eval("DocumentID") %>' CssClass="hiddenText" />           
</ItemTemplate>
</asp:DataList>

这会生成一个有效的HTML表格。

然而,当我尝试设置AlternatingItemStyle-CssClass或使用AlternatingItemStyle时 它只改变第一个td(每个交替行)而不是整行。 我也尝试过使用OnItemDataBound并在后面的代码中设置css类,但它也只是将类添加到td而不是tr。

我只是错过了使用DataList,有一种简单的方法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

DataList为每个项目呈现一个具有单个TD的表。您设计模板的方式,您可以欺骗DataList显示多个列。这导致有效的HTML,但不是因为要使用DataList。控件不会分析模板并检查应该应用样式的其他TD 我建议使用另一个旨在显示多个控件的控件:

所有控件都支持交替项目的不同样式(Repeater通过单独的模板替换可能导致重复标记的交替项目。)