1

在这里,我找到了一次轻松隐藏中继器列的代码。它像这样工作得很好。

<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 以使其变为灰色。

对最佳方法或如何解决此问题有任何想法吗?

4

3 回答 3

2

方法一:

首先,定义一个 bool 属性,例如ShouldBeGreyed在您的数据项类中(如果可能)。这个属性应该返回数据项是否会变灰。

然后,在您的转发器标记中使用它:

<ItemTemplate>
    <tr<%# ((bool)Eval("ShouldBeGreyed"))?"class='grey'":"" %>>
    ...
</ItemTemplate>

方法二:

首先,在代码隐藏中定义一个方法,例如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>
于 2013-08-02T23:05:31.490 回答
0

使用类似这样的东西。在标签的可见部分中写下方法。

 <td><asp:Label runat="server" ID="label2" Visible="<%# MustBeVisible() %>" /></td>

如果您希望td不可见/可见,请使用此

 <td runat="server visible="<%# MustBeVisible() %>"><asp:Label runat="server" ID="label2" /></td>
于 2013-08-02T23:02:48.667 回答
0

如果你做了<td id="tablerow" runat="server"/>你可以使用做类似的事情:

tablerow.Attributes.Add("class", className);
于 2013-08-02T23:07:49.877 回答