DB值为NULL时将整数值显示为零的问题

时间:2013-01-31 13:06:52

标签: c# asp.net gridview

大家好我写了以下内容来显示数据库到gridview列的整数值,如下所示

<asp:TemplateField>
<ItemTemplate>
<asp:Label ID="lblTotalReplies" runat="server" Text='<%#Eval("TotalReplies")==System.DBNull ?  "0" : Convert.ToInt16(Eval("TotalReplies")).ToString() %>'></asp:Label>&nbsp;&nbsp;Replies</li>
</ItemTemplate>
</asp:TemplateField>

但我收到错误,因为System.DBNull' is a 'type', which is not valid in the given context可以帮助我在数据库中使用空值时如何显示0。我不想使用rowdatabound或其他一些

进行绑定

3 个答案:

答案 0 :(得分:2)

DBNull.Value

比较
<asp:Label ID="lblTotalReplies" runat="server" 
     Text='<%#Eval("TotalReplies") ==System.DBNull.Value ?  "0" : 
           Convert.ToInt16(Eval("TotalReplies")).ToString() %>'>
</asp:Label>&nbsp;&nbsp;Replies</li>

DBNull是类型,而Value属性

  

表示DBNull类的唯一实例。

答案 1 :(得分:2)

这是真的。这是一种类型。也许你正在寻找静态的Value字段?

Eval("TotalReplies")==System.DBNull.Value
  

表示DBNull类的唯一实例。


Ravi的评论指出,如果您的SQL目前看起来像这样:

SELECT TotalReplies, ...

然后您可以将其更改为:

SELECT ISNULL(TotalReplies,0) as TotalReplies, ...

我通常使用COALESCE而不是ISNULL,在这种情况下看起来会相同。

答案 2 :(得分:1)

System.DBNull类型有一个静态字段Value,您应该对其进行比较:

<asp:TemplateField>
    <ItemTemplate>
        <asp:Label ID="lblTotalReplies" runat="server" Text='<%#Eval("TotalReplies") == System.DBNull.Value ?  "0" : Convert.ToInt16(Eval("TotalReplies")).ToString() %>'></asp:Label>&nbsp;&nbsp;Replies</li>
    </ItemTemplate>
</asp:TemplateField>