在这里,我发现一旦代码很容易隐藏转发器列。它的效果很好。
<ItemTemplate>
<tr>
<td><asp:Label runat="server" ID="label1" /></td>
<% if (MustBeVisible) { %>
<td"><asp:Label runat="server" ID="label2" /></td>
<% } %>
</tr>
</ItemTemplate>
但是现在,我需要将一个CLASS应用于TableRow并使其成为runat =“server”以便在ItemDataBound中应用颜色条件但是当我添加runat =“server”的属性时,我遇到了冲突运行时和警告。
ASP.NET运行时错误:此上下文不支持代码块
例如,想法是在ItemDataBound中评估label1,如果它是真的必须在TR上应用一个Class使其变灰。
了解最佳方法或如何解决此问题?
答案 0 :(得分:2)
方法1:
首先,定义一个bool属性,在数据项类中说ShouldBeGreyed
(如果可能)。此属性应返回数据项是否显示为灰色。
然后,在转发器标记中使用它:
<ItemTemplate>
<tr<%# ((bool)Eval("ShouldBeGreyed"))?"class='grey'":"" %>>
...
</ItemTemplate>
方法2:
首先,在代码隐藏中定义一个方法,比如ShouldBeGreyed
,如下所示:
protected bool ShouldBeGreyed(object item)
{
// cast to your data-item
var dataItem = (<class-of-your-data-item>)item;
// Determine if it should be greyed out
// bool shouldBeGreyed = ...
...
return shouldBeGreyed;
}
现在在转发器标记中使用它:
<ItemTemplate>
<tr<%# ((bool)ShouldBeGreyed(Container.DataItem))?"class='grey'":"" %>>
...
</ItemTemplate>
答案 1 :(得分:0)
使用类似的东西。在标签的可见部分写下方法。
<td><asp:Label runat="server" ID="label2" Visible="<%# MustBeVisible() %>" /></td>
如果您希望td
不可见/可见,请使用此
<td runat="server visible="<%# MustBeVisible() %>"><asp:Label runat="server" ID="label2" /></td>
答案 2 :(得分:0)
如果您使用了<td id="tablerow" runat="server"/>
,可以使用以下内容:
tablerow.Attributes.Add("class", className);