asp网格视图中的布尔db列的表示

时间:2015-09-27 08:15:38

标签: asp.net gridview

我的数据库中有一列接受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但未在用户代码中处理

     

附加信息:对象引用未设置为的实例   对象

2 个答案:

答案 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”。

希望这会有所帮助。