2015-09-27 39 views
1

我的數據庫中有一列接受true或false值。我想,以顯示其價值網格視圖的列,並使用下面的代碼(我的數據庫列名IsCancelled):在asp網格視圖中顯示boolean db列

<asp:TemplateField HeaderText="کنسل شده" SortExpression="IsCancelled"> 
           <ItemTemplate>%#Boolean.Parse(Eval("IsCancelled").ToString())) ? "Yes" : "No" %></ItemTemplate> 
          </asp:TemplateField> 

但我發現了以下情況例外:

An exception of type 'System.NullReferenceException' occurred in App_Web_jcvfb4rq.dll but was not handled in user code

Additional information: Object reference not set to an instance of an object.

+0

在響應寫入標記%#之前存在缺失標記。也許它會導致錯誤。 – Canavar

+0

似乎你也從數據庫獲得NULL值.. –

+0

我添加了缺失標記,但沒有解決 <%#(Boolean.Parse Eval(「IsCancelled」)。ToString()))? 「Yes」:「No」%>

回答

1

嘗試以下解決方案,如果你是使用C#。請注意,IIF在VB中不可用。

<asp:TemplateField HeaderText="کنسل شده" SortExpression="IsCancelled"> 
    <ItemTemplate> 
     <%#IIf(Boolean.Parse(Eval("IsCancelled").ToString()), "Yes", "No")%> 
    </ItemTemplate> 
</asp:TemplateField> 

如果您正在使用VB,尋找類似的解決方案,然後使用下面的代碼。

<asp:TemplateField HeaderText="کنسل شده" SortExpression="IsCancelled"> 
    <ItemTemplate><%# (Boolean.Parse(Eval("IsCancelled").ToString())) ? "Yes" : "No" %></ItemTemplate> 
</asp:TemplateField> 

但是,在服務器端也可以使用下面的代碼來完成。

Protected Sub GridName_RowDataBound(sender As Object, e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridName.RowDataBound 
    If e.Row.RowType = DataControlRowType.DataRow Then 
     If e.Row.Cells(13).Text = "True" Then 
      e.Row.Cells(13).Text = "Yes" 
     Else 
      e.Row.Cells(13).Text = "No" 
     End If 
    End If 
End Sub 
+0

我這樣做有錯誤: 錯誤:無法從'對象'轉換爲'字符串' –

+0

@saeedgarmsiri您嘗試添加'的ToString()'?如果你想要使用它,你可以使用下面的代碼來創建一個類似於「布爾。帕爾(Eval(」IsCancelled「)。ToString())' –

+0

@ Amnesh Goel當然,我做到了這一點... <%#(Boolean.Parse(Eval(「IsCancelled」)。ToString()))? 「是」:「否」%>

0

如果您在未部署的情況下調試代碼,是否會遇到此問題?我懷疑你在部署之後得到這個錯誤,因爲這個異常發生在編譯文件「App_Web_XXX」中。

所以首先我們需要知道你的本地是否有這樣的問題。如果是,那麼更容易調試,以確定這是否是具有該問題的確切線路。

一旦您確認了具體問題的確切線路。您可以嘗試以下操作:

1)檢查並確保「IsCancelled」列存在於您調用的特定表中,並且沒有錯字,因爲名稱必須匹配。

2)檢查數據源中的select語句。確保您的選擇命令能夠返回該列。

3)可能不相關,但您可以嘗試Convert.ToInt32,並檢查值是1還是0。

由於錯誤與鑄造或轉換問題無關,因此可能會抱怨它無法找到或讀取「IsCancelled」。

希望這會有所幫助。

+0

它可以讀取「IsCancelled」,因爲當我寫下面的代碼時,它應該列數據(如果字段值爲真,它表示在網格視圖單元格中爲「真」)