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

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

<td>
</td>

私が得るエラーは以下の通りです。

Compiler Error Message: CS0019: Operator '>' cannot be applied to operands of type 'object' and 'int'

どのような変更を行う必要がありますか?

私がする必要があるのは、 'IsAuthorized'がゼロより大きい場合、LABELの可視プロパティをtrueに設定するだけです。

3

5 答え

それはあなたが文法の誤りを持っているからです、あなたはばかげたバニーです。

ここにあなたがいます、それはこのようにすべきです:

 <td></td>

You had an extra > and a 0 in there somewhere. Also, since you aren't doing anything between the and , you can close it with an end slash and skip a separate ending tag. Like this

また、そのような可視プロパティを設定しようとすると問題が発生することもありますが、プログラムはその値がブール値ではないと不満を持ちます。次のような明示的な変換を広告に追加することもできます。

 Visible='<%# Convert.ToBoolean(DataBinder.Eval(Container.DataItem, "IsAuthorized")) %>' 
10
追加された
これは美しい答えです!愚かなバニーから、修正されたコード行に、訂正の説明に、そして最後に "あなたもしたいことがあります"。これは答えのための完璧な公式です - 1)答え、2)説明、3)改善する。
追加された 著者 CindyH,

IsAuthorized がビットタイプであると仮定すると、ブール値にキャストするだけです:

 Visible='<%#Convert.ToBoolean(Eval("IsAuthorized"))%>'  
4
追加された
どうもありがとう。これは、XMLソースを使用してGridViewに役立ちました。 もちろん、 Bind()の呼び出しを Eval()の呼び出しに置き換えることが重要でした。
追加された 著者 Greg,
また、NULLにすることはできません。 :)
追加された 著者 marquito,

サーバーサイドのコントロールでこれを行うことができます:


しかし、Page_Loadのように、コードビハインドでDataBindを呼び出さない限りうまくいきません:

myId.DataBind():
2
追加された

IsAuthorized が整数であると仮定すると、これを使うべきです:

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

Evalはオブジェクトを返しますので、最初に整数にキャストしなければなりません。

1
追加された
OPに含まれている "> 0"で、これが正解であると思われます。
追加された 著者 Mike Godin,
<td></td>
0
追加された