无论如何我可以在转发器中隐藏页脚和/或标题吗?
基本上我有两个中继器绑定到不同的数据源,一个在另一个上面:
<asp:Repeater runat="server" ID="rptAdditionalCosts">
<HeaderTemplate>
<table id="optionalExtrasPriceBreakdown" cellpadding="0" cellspacing="0" border="0">
<thead>
<tr>
<th colspan="4"> Additional Costs </th>
</tr>
<tr>
<th> Description </th>
<th> Quantity </th>
<th> Price </th>
<th class="totalPrice"> Total Price </th>
</tr>
</thead>
<tbody>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td><%#DataBinder.Eval(Container.DataItem, "Description")%></td>
<td><%#DataBinder.Eval(Container.DataItem, "Count")%></td>
<td>£<%# DataBinder.Eval(Container.DataItem, "Gross", "{0:n2}")%></td>
<td class="totalPrice">£<%#DataBinder.Eval(Container.DataItem, "Total", "{0:n2}")%></td>
</tr>
</ItemTemplate>
<FooterTemplate>
</tbody>
</table>
<hr class="spacer" />
</FooterTemplate>
</asp:Repeater>
<asp:Repeater runat="server" ID="rptOptionalExtras">
<HeaderTemplate>
<table id="optionalExtrasPriceBreakdown" cellpadding="0" cellspacing="0" border="0">
<thead>
<tr>
<th colspan="4"> Additional Costs </th>
</tr>
<tr>
<th> Description </th>
<th> Quantity </th>
<th> Price </th>
<th class="totalPrice"> Total Price </th>
</tr>
</thead>
<tbody>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td><%#DataBinder.Eval(Container.DataItem, "Description")%></td>
<td><%#DataBinder.Eval(Container.DataItem, "Number")%></td>
<td>£<%# DataBinder.Eval(Container.DataItem, "UnitCost", "{0:n2}")%></td>
<td class="totalPrice">£<%#DataBinder.Eval(Container.DataItem, "TotalCost", "{0:n2}")%></td>
</tr>
</ItemTemplate>
<FooterTemplate>
</tbody>
</table>
<hr class="spacer" />
</FooterTemplate>
</asp:Repeater>
如果它们都包含数据我想要隐藏前面的页脚和后面的页眉,那么它会在HTML中生成一个完整的表。我有bool告诉我它们是否包含数据。
if (optionalVisible && additionalVisible)
{
//hide rptAdditionalCosts footer
//and
//hide rptPerBookingOptionalExtras header
}
问题是转发器似乎不包含任何隐藏或显示页脚或标题模板的选项?我错过了一些明显的东西吗?
答案 0 :(得分:4)
最后,我设法使用转发器的ItemDataBound
事件来处理某些事情:
void rptAdditionalCosts_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Footer)
{
if (optionalVisible && additionalVisible)
e.Item.Visible = false;
}
}
void rptOptionalExtras_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Header)
{
if (optionalVisible && additionalVisible)
e.Item.Visible = false;
}
}
感谢@KarlAnderson的回答,我从来没有真正检查过他的解决方案,因为我刚刚开始运行。
答案 1 :(得分:1)
尝试分别将页眉和页脚模板设置为null
,如下所示:
if (optionalVisible && additionalVisible)
{
//hide rptAdditionalCosts footer
//and
//hide rptPerBookingOptionalExtras header
rptAdditionalCosts.FooterTemplate = null;
rptPerBookingOptionalExtras.HeaderTemplate = null;
}
答案 2 :(得分:1)
我遇到了将模板设置为null而干扰转发器命令的问题。我建议改为设置一个新的BindableTemplateBuilder。
if (optionalVisible && additionalVisible)
{
//hide rptAdditionalCosts footer
//and
//hide rptPerBookingOptionalExtras header
rptAdditionalCosts.FooterTemplate = new BindableTemplateBuilder();
rptPerBookingOptionalExtras.HeaderTemplate = new BindableTemplateBuilder();
}