2

大家好我写了以下内容来显示从数据库到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或其他

4

3 回答 3

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 类的唯一实例。

于 2013-01-31T13:10:11.990 回答
2

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

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

表示DBNull类的唯一实例。


Ravi 的评论指出,如果您的 SQL 当前如下所示:

SELECT TotalReplies, ...

然后您可以将其更改为:

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

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

于 2013-01-31T13:10:31.833 回答
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>
于 2013-01-31T13:10:45.250 回答