ASPXページの 'visible'プロパティの値をプログラムで設定する

2011-10-27 22 views
3

条件に応じて、ラベルのvisibleプロパティをtrueまたはfalseに設定しようとしています。これはASPXページにあります。これが実行されるとき、私は間違ったことをしてエラーを得る。ASPXページの 'visible'プロパティの値をプログラムで設定する

<td><asp:Label ID="Label23" runat="server" Text='CERTIFIED' 
    Visible='<%# DataBinder.Eval(Container.DataItem, "IsAuthorized") > 0%>'> 
</asp:Label></td> 

エラー私は以下のようになっています。

コンパイラエラーメッセージ:CS0019:演算子「は>」型「オブジェクト」と 'int型の オペランドに適用することはできません

実行する必要がどのような変更?

すべて私は 'IsAuthorized'が0より大きい場合、LABELのvisibleプロパティをtrueに設定する必要があります。

答えて

10

これは、文法エラーがあるためです。あなたは愚かなバニーです。

ここにあなたがいる、それは次のようにする必要があります:

<td><asp:Label ID="Label23" runat="server" Text='CERTIFIED' Visible='<%# DataBinder.Eval(Container.DataItem, "IsAuthorized") %>' /></td> 

あなたがどこかに余分な>0を持っていました。 また、<asp:Label</asp:Label>の間に何もしていないので、終了スラッシュで閉じて別の終了タグをスキップできます。このように<asp:Label ... />

時には問題を引き起こすような可視プロパティを設定しようとすると、プログラムは値がブール値ではないと訴えることがあります。あなたが広告このような明示的な変換もする場合があります

Visible='<%# ((int)DataBinder.Eval(Container.DataItem, "IsAuthorized")) > 0 %>' 

評価がobjectを返すので、あなたはキャストする必要があります。

Visible='<%# Convert.ToBoolean(DataBinder.Eval(Container.DataItem, "IsAuthorized")) %>' 
+2

これは美しい答えです!愚かなバニーから、修正されたコード行に、訂正の説明に、そして最後に "あなたもしたいことがあります"。これは答えのための完璧な公式です - 1)答え、2)説明、3)改善する。 – CindyH

0
<td><asp:Label ID="Label23" runat="server" Text='CERTIFIED' Visible='<%# (int)(DataBinder.Eval(Container.DataItem, "IsAuthorized")) > 0 %>' ></asp:Label></td> 
1

IsAuthorizedが整数であると仮定すると、あなたはこれを使用する必要があります最初にintegerに。

<someControl id="myId" runat="server" Visible='<%# this.SomeField > 5 %>'> 

しかし、それは動作しません:あなたはこれを行うことができますサーバー側のコントロールに

Visible='<%#Convert.ToBoolean(Eval("IsAuthorized"))%>' 
+0

OPに "> 0"が含まれていると思われますが、これは正解です。 –

4

Page_LoadなどのコードでDataBindを呼び出さない限り:

myId.DataBind(): 
+0

また、NULLにすることはできません。 :) – marquito

+0

ありがとうございました。これは、XMLソースを使用してGridViewに役立ちました。 ' 'もちろん、 'Bind()'コールを 'Eval()'コールで呼び出します。 – Greg

2

注:ちょうどブール値にキャストし、IsAuthorizedはビット型であると仮定すると

関連する問題