在 aspx 上:
<table>
<tr>
<asp:Repeater ID="rptHeader" runat="server">
<ItemTemplate>
<th><%#Eval("Category")%></th>
</ItemTemplate>
</asp:Repeater>
</tr>
<tr>
<asp:Repeater ID="rptContents" runat="server">
<ItemTemplate>
<td valign="top">
<%#Eval("Content")%>
</td>
</ItemTemplate>
</asp:Repeater>
</tr>
</table>
在隐藏代码上:
protected void Page_Load(object sender, EventArgs e)
{
rptHeader.DataSource = DataSource;
rptHeader.DataBind();
rptContentBlocks.DataSource = DataSource;
rptContentBlocks.DataBind();
}
这里的问题是,我们可以只使用一个中继器,而不是使用两个中继器吗? 我们实际上需要使用不同的表格行将标题与内容分开......
编辑:将 rptHeader 的 ItemTemplate 的 html 元素从 <td>
更改为至<th>
更清楚一点。 :-)
最佳答案
在我看来,如果没有中继器黑客攻击,这是不可能的。无论如何,有一种相当不规则的方法可能有效。您还可以使用两个 foreach 语句而不是重复器。
代码
protected string[] headers = { "A", "B", "C", "D" };
protected string[] contents = { "Alpha", "Beta", "Counter", "Door" };
//string[] headers = { "A", "B", "C", "D" };
//string[] contents = { "Alpha", "Beta", "Counter", "Door" };
//DataList1.RepeatColumns = headers.Length;
//DataList1.DataSource = headers.Concat(contents);
//DataList1.DataBind();
Html 标记
<table>
<tr>
<%foreach (string item in headers)
{ %>
<th><%= item %></th>
<% } %>
</tr>
<tr>
<%foreach (string item in contents)
{ %>
<td><%= item %></td>
<% } %>
</tr>
</table>
<!--
<asp:DataList ID="DataList1" runat="server" RepeatDirection="Horizontal">
<ItemTemplate>
<%# Container.DataItem %>
</ItemTemplate>
</asp:DataList>
-->
关于c# - 使用表优化中继器的 asp.net C# 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2011683/