首先,我需要从数据库绑定(bind)一个表,以便每一行都可以编辑。
我决定选择 DataList,因为它有 <EditItemTemplate>
属性而中继器没有。
我需要创建一个 Zebra 表,为此我创建了以下 CSS 类:
.row:nth-of-type(odd)
{
background-color:Green;
}
问题是,当我在转发器中使用此类时,它工作正常,因为转发器的构建方式使您可以对行和列进行编码。 例如:
<asp:Repeater>
<HeaderTemplate>
<Table ...>
</HeaderTemplate>
<ItemTemplate>
<tr Class="row">
<td> ... </td>
<td> ... </td>
</tr>
</ItemTepmlate>
<FooterTemplate></Table></FooterTemplate>
但是,当我以同样的方式构建我的 DataList 时,它看起来很奇怪而且很乱。 这就是我的数据列表的构建方式:
<asp:DataList ID="dlStages" runat="server" DataKeyField="Priority" OnCancelCommand="dlStages_CancelCommand"
OnEditCommand="dlStages_EditCommand"
OnUpdateCommand="dlStages_UpdateCommand" BorderWidth="2"
GridLines="Both" CellPadding="20" CellSpacing="20" Width="99%"
onitemdatabound="dlStages_ItemDataBound">
<HeaderTemplate>
<th>
Priority
</th>
<th>
Stage
</th>
<th>
Description
</th>
<th>
Command
</th>
<th>
Expected End Date
</th>
</HeaderTemplate>
<ItemTemplate>
<td>
<%# Eval("Priority") %>
</td>
<td>
<%# Eval("StatusName") %>
</td>
<td>
<%# Eval("Comments") %>
</td>
<td>
<asp:LinkButton ID="lbtnEdit" runat="server" Text="Edit" CommandName="edit"></asp:LinkButton>
</td>
<td>
<%# Eval("ExpectedEndDate", "{0:dd-MM-yyyy}")%>
</td>
</ItemTemplate>
<EditItemTemplate>
<td>
<%# Eval("Priority") %>
</td>
<td>
<%# Eval("StatusName") %>
</td>
<td>
<asp:TextBox ID="txtComments" runat="server" Text='<%# Eval("Comments") %>' Width="800px"
Height="48px" TextMode="MultiLine"></asp:TextBox>
</td>
<td>
<asp:LinkButton ID="lbtnUpdate" runat="server" Text="Update" CommandName="update"></asp:LinkButton>
/
<asp:LinkButton ID="lbtnCancel" runat="server" Text="Cancel" CommandName="cancel"></asp:LinkButton>
</td>
<td>
<asp:TextBox runat="server" ID="txtDate"></asp:TextBox>
<asp:CalendarExtender ID="CalendarExtender1" runat="server" PopupButtonID="txtDate"
TargetControlID="txtDate" Format="dd-MM-yyyy">
</asp:CalendarExtender>
</td>
</EditItemTemplate>
</asp:DataList>
为了给DataList中的每一行设置css类,我在代码后面写了如下代码:
protected void dlStages_ItemDataBound(object sender, DataListItemEventArgs e)
{
e.Item.CssClass = "row";
}
问题是它不会为我创建斑马表。相反,它用那种灰色绘制第一列(我不知道它从哪里来的)。
有人能告诉我我的代码有什么问题吗?就我而言,如何在 DataList 控件中实现 ZEBRA 表?
提前致谢
附言 我的问题可能不清楚,所以如果需要澄清,我会进一步详细解释。
最佳答案
请参阅此相关问题:Creating table inside Datalist
您还没有指定
<tr>
模板中的标签,所以DataList
正在生成孤儿<td>
标签您可以使用
RepeatLayout
值为Table
的属性拥有DataList
生成打开和关闭<table>
给你打标签。
关于asp.net - 设置 Zebra DataList 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13937293/