Исключение нулевой ссылки при привязке DataTable к GridView - PullRequest
0 голосов
/ 02 сентября 2010

Я работаю над этим уже несколько дней и каждый раз, когда возвращаюсь к этой проблеме, я просто не понимаю, почему она работает неправильно.

Я пытаюсь привязать 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 нет нулевых значений и их нет. Так что я в растерянности.

Помоги мне переполнить стек, ты моя единственная надежда.

Ответы [ 3 ]

1 голос
/ 02 сентября 2010

Я заменил ваш звонок на Core.Transreports(...) на фиктивную таблицу данных и не смог воспроизвести это. Можете ли вы предоставить больше информации? Что говорит трассировка стека? Как работает Core.Transreports()?

0 голосов
/ 02 сентября 2010

Так как вы получаете сообщение об ошибке, потому что 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>

Затем вы можете сослаться на это представление сетки из кода ниже так:

sample.DataSource = dattbl;
sample.DataBind();
0 голосов
/ 02 сентября 2010

Ваш код выглядел так:

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

За исключением "в последней строке".

Вы уверены, что это не dattbl, который является нулевым?

...