大家好我写了以下内容来显示数据库到gridview列的整数值,如下所示
<asp:TemplateField>
<ItemTemplate>
<asp:Label ID="lblTotalReplies" runat="server" Text='<%#Eval("TotalReplies")==System.DBNull ? "0" : Convert.ToInt16(Eval("TotalReplies")).ToString() %>'></asp:Label> Replies</li>
</ItemTemplate>
</asp:TemplateField>
但我收到错误,因为System.DBNull' is a 'type', which is not valid in the given context
可以帮助我在数据库中使用空值时如何显示0
。我不想使用rowdatabound
或其他一些
答案 0 :(得分:2)
<asp:Label ID="lblTotalReplies" runat="server"
Text='<%#Eval("TotalReplies") ==System.DBNull.Value ? "0" :
Convert.ToInt16(Eval("TotalReplies")).ToString() %>'>
</asp:Label> 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> Replies</li>
</ItemTemplate>
</asp:TemplateField>