2017-03-12 22 views
0

DataSourceのブール型の列を使用して、GridView内のコントロールの可視性を制御します。私は、埋め込まれたコードブロックを使用するマークアップで :埋め込みコードブロック内の反転ブール

<asp:Label ID="LabelTitle" runat="server" 
      Text = '<%# Bind("Title") %>' Visible='<%# Eval("SQL_Column") %>'/> 

は、この式を反転させる方法はありますか? SQL_Columnがfalseの場合はTextBox TextBoxTitleを表示し、その逆の場合はTextBox TextBoxTitleを表示します。私は背後にあるコードからそれを行うにはしたくない

Visible='<%# Eval(!"SQL_Column") %>' 

よう

何か。

あなたの​​文の外であなたのいない!反転を行う必要があるマーティン

答えて

2

Evalはオブジェクトを返します。感嘆符演算子をオブジェクトに適用することはできません。

代わりに、まずブール値に変換する必要があります。

<asp:Label ID="LabelTitle" runat="server" 
    Text = '<%# Bind("Title") %>' 
    Visible='<%# !Convert.ToBoolean(Eval("SQL_Column")) %>'/> 
+0

素晴らしい...そして説明に感謝します! – Barnabeck

1

!(bool)Eval("SQL_Column") 

あなたがそれを持っている方法は、!"..."は、あなたが意味をなさない文字列自体にない操作を適用しようとしていることを意味します。​​の前に、not演算は評価の戻り値を逆転しようとしていることを意味します。

逆変換できるように、評価値をオブジェクトからブール値に明示的にキャストする必要があることに注意してください。

+0

私はあまりにもことをしようとしたが、それはあなたが 'SQL_Column'がオブジェクトに評価されていて、ブール値に変換する必要があることを意味 – Barnabeck

+0

「演算子は!型オブジェクトのオペランドに適用することはできない」と言います。私は答えを更新します。 – Soviut

関連する問題