2

こんにちはすべて私はデータベースからグリッドビュー列に整数値を表示するために次のように書いています

<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>

しかし、データベースにnull値がある場合に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 に答える