我的数据库中有一列接受true或false值。我想显示其值网格视图列并使用下面的代码(我的数据库列名称为IsCancelled):
<asp:TemplateField HeaderText="کنسل شده" SortExpression="IsCancelled">
<ItemTemplate>%#Boolean.Parse(Eval("IsCancelled").ToString())) ? "Yes" : "No" %></ItemTemplate>
</asp:TemplateField>
但是我得到了以下异常:
类型&#39; System.NullReferenceException&#39;的例外情况发生在 App_Web_jcvfb4rq.dll但未在用户代码中处理
附加信息:对象引用未设置为的实例 对象
答案 0 :(得分:1)
如果您使用 C#,请尝试以下解决方案。请注意,VB中不提供IIF。
<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
答案 1 :(得分:0)
如果在未部署的情况下调试代码,是否遇到此问题?我怀疑你在部署后得到这个错误,因为异常发生在编译文件的“App_Web_XXX”中。
首先,我们需要知道您的当地是否有这样的问题。如果是,那么调试就更容易知道这是否是出现问题的确切行。
确认有问题的确切行后。您可以尝试以下方法:
1)检查并确保您调用的特定表中存在“IsCancelled”列,并且没有拼写错误,因为名称必须匹配。
2)检查数据源中的select语句。确保您的select命令能够返回该列。
3)可能不相关但您可以尝试Convert.ToInt32,并检查值是1还是0。
由于错误不是关于转换或转换问题,它可能会抱怨它无法找到或读取“IsCancelled”。
希望这会有所帮助。