1

ここで、リピーター列を簡単に非表示にするコードを見つけました。このようにうまく機能します。

<ItemTemplate>
      <tr>
            <td><asp:Label runat="server" ID="label1" /></td>
            <% if (MustBeVisible) { %>
            <td"><asp:Label runat="server" ID="label2" /></td>
            <% } %>
      </tr>
</ItemTemplate>

しかし今、ItemDataBound に色条件を適用するために、TableRow に CLASS を適用し、それを runat="server" にする必要がありますが、runat="server" の属性を追加すると、実行時に競合が発生し、警告。

ASP.NET ランタイム エラー: コード ブロックはこのコンテキストではサポートされていません

たとえば、ItemDataBound で label1 を評価し、true の場合は TR に Class を適用して灰色にする必要があります。

最善のアプローチまたはこれを解決する方法についてのアイデアはありますか?

4

3 に答える 3

2

アプローチ 1:

ShouldBeGreyedまず、データ項目クラスなどで bool プロパティを定義します (可能な場合)。このプロパティは、データ項目がグレー表示されるかどうかを返す必要があります。

次に、これをリピーター マークアップで使用します。

<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>
于 2013-08-02T23:05:31.490 に答える
0

このようなものを使用してください.. ラベルの Visible 部分にメソッドを記述します。

 <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 に答える