0

データベースにセルの null 値があるとエラーが表示されます。オブジェクトを DBNull から他の型にキャストすることはできません。 - Asp.net グリッド ビュー

<asp:TemplateField ItemStyle-Width="120" HeaderText="Price Difference">
                                     <ItemTemplate>
<%# PercentageChange(DataBinder.Eval(Container.DataItem, "FirstPrice"),DataBinder.Eval(Container.DataItem, "SecondPrice")) %>

                                     </ItemTemplate>
                                 </asp:TemplateField>

C#

protected string PercentageChange(object client_Price, object second_price)
    {
       double price1 = Convert.ToDouble(client_Price);
            double price2 = Convert.ToDouble(second_price);
            double percentagechange = ((price1 - price2) / price2) * 100;
             return percentagechange ;
} 
4

3 に答える 3

3

次のように値を比較する必要がありDBNull.Valueます

protected string PercentageChange(object client_Price, object second_price)
{
       if(client_price==DBNull.Value)
       {
           .....
       }
       //double price1 = Convert.ToDouble(client_Price);
       //double price2 = Convert.ToDouble(second_price);
       //double percentagechange = ((price1 - price2) / price2) * 100;
       //return percentagechange ;
 } 
于 2013-11-14T10:50:07.360 に答える
2

次に、それがDBNullまたは nullかどうかを確認します。

protected string PercentageChange(object client_Price, object second_price)
{
    if(DBNull.Value.Equals(client_Price) || client_Price == null || DBNull.Value.Equals(second_price) || second_price == null)
        return "N/A"; // or whatever

    double price1 = Convert.ToDouble(client_Price);
    double price2 = Convert.ToDouble(second_price);
    double percentagechange = ((price1 - price2) / price2) * 100;
    return percentagechange.ToString();
} 
于 2013-11-14T10:52:57.367 に答える