【问题标题】:Null Reference Exception when binding DataTable to GridView将 DataTable 绑定到 GridView 时出现空引用异常
【发布时间】:2010-09-02 15:39:29
【问题描述】:

我已经为此工作了几天,每次我回到这个问题时,我只是不明白为什么它不能正常工作。

我正在尝试将 DataTable 绑定到我动态创建的 GridView 控件。我创建 GridView 控件,将其添加到表中,然后将 DataSource 属性分配给我的 DataTable。

这是代码:

Table tbl = new Table();

DataTable dattbl = Core.Transreports(Request.QueryString["itemaddress"], Request.QueryString["docnum"], Request.QueryString["docid"]);

GridView dg = new GridView() { ID = "dg", AllowPaging = true, PageSize = 10 };

TableRow tr = new TableRow();

TableCell tc = new TableCell();
tc.Controls.Add(dg);
tc.ColumnSpan = 10;
tr.Cells.Add(tc);

tbl.Rows.Add(tr);

if (dattbl.Rows.Count > 0)
{
    dg.DataSource = dattbl;
    dg.DataBind();
}

所以当我得到最后一行时,我执行 DataBind (dg.DataBind()) 方法的地方就是我得到空引用异常的地方。

我不太确定为什么会遇到此错误,并且还没有找到解决方案。我已经检查以确保 DataTable 中也没有空值,并且没有。所以我很茫然。

帮我堆栈溢出,你是我唯一的希望。

【问题讨论】:

  • 您可以发布异常详细信息吗? (消息、堆栈跟踪等)
  • 您是否已将表格添加到页面中?尝试不允许分页,如果您还没有添加到页面,这可能会解决它。
  • @Brett,成功了!谢谢。现在我需要弄清楚要分页...
  • 我在我创建的答案中添加了更多解释,如果您遇到任何问题,请告诉我!

标签: c# asp.net data-binding gridview datatable


【解决方案1】:

我用虚拟 DataTable 替换了您对 Core.Transreports(...) 的调用,但无法重现。你能提供更多信息吗?堆栈跟踪说明了什么? Core.Transreports() 是如何工作的?

【讨论】:

  • 我也这样做了……嗯。那么基本上 Core.Transreports() 是一个构建 SQL 查询的方法,调用另一个执行查询并返回数据表的函数。
【解决方案2】:

由于gridview不是页面上的控件而导致错误,因此您需要在页面中放置<asp:GridView>,或将其放入某个asp控件中。然后将该控件放在页面上。这是一个示例:

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="Sample.ascx.cs" Inherits="Contacts" %>

<asp:GridView id="sample" runat="server" AllowPaging="true" PageSize="10"></asp:GridView>

然后你可以像这样从后面的代码中引用那个gridview:

sample.DataSource = dattbl;
sample.DataBind();

【讨论】:

  • 以上代码中的Contacts是什么???
【解决方案3】:

您的代码如下所示:

if (dattbl.Rows.Count > 0){    dg.DataSource = dattbl;    dg.DataBind();}

“最后一行”例外。

你确定不是空的 dattbl 吗?

【讨论】:

  • 对不起,由于某种奇怪的原因,我的代码被堆栈溢出重新格式化...我的源代码中有换行符。是的,我确定。我已经尝试注释掉我在哪里执行 DataBinding,然后单独输出数据表的每一列/行。这工作没有错误。
猜你喜欢
  • 1970-01-01
  • 2013-03-23
  • 1970-01-01
  • 1970-01-01
  • 2010-10-30
  • 2014-12-22
  • 1970-01-01
  • 1970-01-01
  • 2017-11-03
相关资源
最近更新 更多