2011-10-27 50 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:運算符「>」不能應用於類型「對象」和「廉政」的 操作數

變化需要採取哪些措施?

當'IsAuthorized'大於零時,我需要做的所有操作都將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='<%# 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是一個整數,你應該這樣做:

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

評估和演示返回object,所以你必須投它首先到integer

+0

似乎與OP包含的「> 0」一樣,這是正確的答案。 –

4

假設IsAuthorized是位類型,只需將其轉換爲一個布爾值:

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

並記住它不能爲NULL。 :) – marquito

+0

非常感謝。這對於帶有XML源的GridView非常有用。 ''Text =「
」runat =「server」/>'關鍵當然是要取代用'Eval()'調用'Bind()'調用。 – Greg

2

注意:在服務器端控制,你可以這樣做:

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

但它不會工作除非你在後面的代碼中調用DataBind,如Page_Load:

myId.DataBind(): 
相關問題