2013-04-10 75 views
2

我只想顯示某個項目模板,如果對象的CRMID是一個可以爲空的字符串。錯誤試圖評估布爾?

,如果爲空,我不希望他們顯示此項目模板:

 <asp:TemplateField HeaderText=""> 
       <ItemTemplate> 
       <a href="#myModal" id='rm_btn' runat="server" role="button" class="close custom-close" onclick="showModal('#myModal')" onserverclick="rmbtn" 
        visible='<%# (bool)(DataBinder.Eval(Container.DataItem, "CRMID") == null) ? "true" : "false" %>'> 
        ×</a> 
       </ItemTemplate> 
      </asp:TemplateField> 

不過,我得到以下錯誤:

Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately. 

Compiler Error Message: CS0030: Cannot convert type 'string' to 'bool' 

Source Error: 


Line 136:    <asp:TemplateField HeaderText=""> 
Line 137:     <ItemTemplate> 
Line 138:     <a href="#myModal" id='rm_btn' runat="server" role="button" class="close custom-close" onclick="showModal('#myModal')" onserverclick="rmbtn" 
Line 139:      visible='<%# (bool)(DataBinder.Eval(Container.DataItem, "CRMID") == null) ? "true" : "false" %>'> 
Line 140:      ×</a> 

我不知道我做錯了.. 。

感謝

+1

你試過從你的值中刪除引號嗎? 「true」:「false」 - >'? true:false'。還有其他方法可以解決這個問題,我無法測試它們,但是已經在下面的答案中編譯了它們。 – Alex 2013-04-10 15:14:14

+0

現在,你發送真/假作爲字符串。 C#不能直接將它們轉換爲像javascript這樣的布爾值。我首先想到的是從那個「可見」任務中刪除引號。 – krillgar 2013-04-10 15:14:38

回答

4

您正在嘗試直接轉換"true"Ø r "false"即。 string來衡量價值。所以請嘗試true/ false而不是像這樣的字符串。

visible='<%# (bool)(DataBinder.Eval(Container.DataItem, "CRMID") == null) ? true : false %>'> 
1

我可以建議多次嘗試:

刪除引號

// BEFORE 
(bool)(DataBinder.Eval(Container.DataItem, "CRMID") == null) ? "true" : "false" 

// AFTER 
(bool)(DataBinder.Eval(Container.DataItem, "CRMID") == null) ? true : false 

或者bool.Parse

// BEFORE 
(bool)(DataBinder.Eval(Container.DataItem, "CRMID") == null) ? "true" : "false" 

// AFTER 
bool.Parse((DataBinder.Eval(Container.DataItem, "CRMID") == null) ? "true" : "false") 

或直出去掉勾選

// BEFORE 
(bool)(DataBinder.Eval(Container.DataItem, "CRMID") == null) ? "true" : "false" 

// AFTER 
(DataBinder.Eval(Container.DataItem, "CRMID") == null) /* this is a bool already*/