2015-11-14 165 views
-3

当gridview绑定并且gridview没有返回任何数据时,我得到这个错误:System.NullReferenceException:对象引用未设置为对象的实例。如果gridview返回一些数据,那么一切都可以。我不知道如何解决它,它在该行System.NullReferenceException:未将对象引用设置为对象的实例

decimal total = dt.AsEnumerable().Sum(r => r.Field<decimal?>("Remaining_Ballance") ?? 0); 

这里没有问题 是我的代码

cmd.Parameters.Clear(); 
      cmd.Connection = con; 
      cmd.Parameters.Add("@ID", SqlDbType.VarChar).Value = myVarr.ToString(); 

      con.Open(); 
      sda.SelectCommand = cmd; 

      sda.Fill(dt); 
      GridView1.DataSource = dt; 
      GridView1.DataBind(); 

      //Calculate Sum and display in Footer Row 
      decimal total = dt.AsEnumerable().Sum(r => r.Field<decimal?>("Remaining_Ballance") ?? 0);  
      GridView1.FooterRow.Cells[11].Text = "Total"; 
      GridView1.FooterRow.Cells[11].HorizontalAlign = HorizontalAlign.Right; 
      GridView1.FooterRow.Cells[12].Text = total.ToString("N2"); 
+0

什么是你刚刚拼错的几率'Ballance'错了吗? ('Balance') – Jonesopolis

回答

-1

可以包括执行计算之前进行空条件检查。

cmd.Parameters.Clear(); 
      cmd.Connection = con; 
      cmd.Parameters.Add("@ID", SqlDbType.VarChar).Value = myVarr.ToString(); 

      con.Open(); 
      sda.SelectCommand = cmd; 

      sda.Fill(dt); 
      GridView1.DataSource = dt; 
      GridView1.DataBind(); 

      //Calculate Sum and display in Footer Row 
if(dt !=null) 
{ 
      if(dt.Rows.Count>0) 
{ 
      decimal total = dt.AsEnumerable().Sum(r => r.Field<decimal?>("Remaining_Ballance") ?? 0);  
      GridView1.FooterRow.Cells[11].Text = "Total"; 
      GridView1.FooterRow.Cells[11].HorizontalAlign = HorizontalAlign.Right; 
      GridView1.FooterRow.Cells[12].Text = total.ToString("N2"); 
} 
} 
0

检查其空

if(dt != null) 
{ 
      decimal total = dt.AsEnumerable().Sum(r => r.Field<decimal?>("Remaining_Ballance") ?? 0);  
      GridView1.FooterRow.Cells[11].Text = "Total"; 
      GridView1.FooterRow.Cells[11].HorizontalAlign = HorizontalAlign.Right; 
      GridView1.FooterRow.Cells[12].Text = total.ToString("N2"); 
} 
else 
{ 
      //do the alternative 
} 
0

System.NullReferenceException: Object reference not set to an instance of an object.

因为你填写你的数据表 “DT”,但返回0行那个时候你的DT对象为null。如果您在返回此错误时可以访问任何空对象。请替换下面的代码。

Curreent Code

 //Calculate Sum and display in Footer Row 
     decimal total = dt.AsEnumerable().Sum(r => r.Field<decimal?>("Remaining_Ballance") ?? 0);  
     GridView1.FooterRow.Cells[11].Text = "Total"; 
     GridView1.FooterRow.Cells[11].HorizontalAlign = HorizontalAlign.Right; 
     GridView1.FooterRow.Cells[12].Text = total.ToString("N2"); 

New Code

if(dt != null && dt.Rows.Count > 0) 
{ 
     decimal total = dt.AsEnumerable().Sum(r => r.Field<decimal?>("Remaining_Ballance") ?? 0);  
     GridView1.FooterRow.Cells[11].Text = "Total"; 
     GridView1.FooterRow.Cells[11].HorizontalAlign = HorizontalAlign.Right; 
     GridView1.FooterRow.Cells[12].Text = total.ToString("N2"); 
} 
else 
{ 

} 
相关问题