Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Эта статья поможет устранить проблему, которую сетка данных может не отображаться при просмотре страницы .aspx, содержащей элемент управления DataGrid. Эта статья относится к пространству System.Data.SqlClient
имен библиотеки классов Microsoft платформа .NET Framework.
Исходная версия продукта: ASP.NET
Исходный номер базы знаний: 313156
Симптомы
При просмотре страницы .aspx, содержащей DataGrid
элемент управления, сетка данных может не отображаться. Кроме того, может появиться только заголовок сетки данных, но сетка данных не может содержать никаких данных.
Причина 1. Сетка данных не отображается
Сетка данных не отображается вообще, если:
Свойство элемента управления не задано
DataSource
DataGrid
. OrМетод элемента управления или метода объекта из кода не вызывается
DataBind
DataGrid
.Page
DataBind
Причина 2. Появится заголовок сетки данных, но сетка данных пуста
Появится заголовок сетки данных, но сетка данных не содержит никаких данных, если:
Источник данных не содержит никаких данных. Or
Вы не заполняете набор данных, привязанный к
DataGrid
данным во время выполнения.Примечание.
Для явного заполнения набора данных необходимо написать код, чтобы
DataGrid
данные из базы данных заполнялись во время выполнения. Это можно сделать при использовании конструктора для добавления объекта DataAdapter и создания набора данных во время разработки.
Эта проблема возникает, так как страница .aspx извлекает сведения о полях заголовка из файла DataSetName.xsd . Файл DataSetName.xsd создается для каждого набора данных при создании набора данных во время разработки. Этот файл содержит представление расширяемого языка разметки (XML) набора данных. Страница .aspx извлекает сведения о поле заголовка из этого файла. Таким образом, заголовок сетки данных отображается, но сетка данных пуста.
Разрешение причины 1
DataSource
Задайте свойство для указания соответствующегоDataGrid
источника данных. Рассмотрим пример.DataGrid1.DataSource = dataSet11.Tables("Authors")
DataGrid1.DataSource = dataSet11.Tables["Authors"] ;
Примечание.
Если вы программно извлекаете данные из источника данных, назначьте источнику
DataSource
данных свойству объектаDataGrid
.Если конструктор используется для добавления
DataAdapter
в веб-форму и создания набора данных, откройтеDataGrid
страницу свойств, а затем выберите соответствующийDataSet
илиDataView
объект в свойствеDataSource
.DataBind
Вызовите методDataGrid
элемента управления илиDataBind
метода объекта Page. Например:'Use one of the following lines. 'Page.DataBind() DataGrid1.DataBind()
//Use one of the following lines. //Page.DataBind(); DataGrid1.DataBind();
Разрешение причины 2
Убедитесь, что источник данных содержит данные и возвращает данные.
Используйте для
DataAdapter
заполнения набора данных. Например:sqlDataAdapter1.Fill(dataSet11, "Authors")
sqlDataAdapter1.Fill(dataSet11,"Authors");
Состояние
Такое поведение предусмотрено программой.
Дополнительная информация
DataGrid
Привязать элемент управления веб-сервера к источнику данных через DataSource
свойство DataGrid
правильной отрисовки сетки данных на странице. После установки источника данных необходимо также явно вызвать DataBind
метод DataGrid
элемента управления или DataBind
метода Page
объекта из кода.
Действия по воспроизведению поведения — сетка данных не отображается
Создайте проект веб-приложения ASP.NET в Visual Basic .NET или Visual C# .NET.
Перетащите
DataGrid
элемент управления из панели элементов и перетащите элемент управления в форму.В конструкторе дважды щелкните страницу .aspx, чтобы открыть окно за кодом. Добавьте следующий код в начало окна программной части, чтобы добавить необходимые ссылки на пространство имен:
Imports System.Data Imports System.Data.SqlClient
using System.Data.SqlClient;
Замените код в событии
Form_Load
следующим кодом:Примечание.
Перед выполнением этого кода необходимо изменить
uid = <username>
иpwd = <strong password>
изменить правильные значения. Убедитесь, что UID имеет соответствующие разрешения для выполнения этой операции в базе данных.Private Sub Page_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load 'Write code to access the database. Dim myConnection As New SqlConnection("server=(local);database=pubs;uid=<username>;pwd=<strong password>") Dim myDataAdapter As New SqlDataAdapter("select * from authors", myConnection) Dim myDataSet As New DataSet() myConnection.Open() myDataAdapter.Fill(myDataSet)'Uncomment the following line to resolve this problem. 'DataGrid1.DataSource = myDataSet DataGrid1.DataBind() End Sub
private void Page_Load(object sender, System.EventArgs e) { //Write code to access the database. SqlConnection myConnection = new SqlConnection("server=(local);database=pubs;uid=<username>;pwd=<strong password>"); SqlDataAdapter myDataAdapter = new SqlDataAdapter("select * from authors", myConnection); DataSet myDataSet = new DataSet(); myConnection.Open(); myDataAdapter.Fill(myDataSet); //Uncomment the following line to resolve this problem. //DataGrid1.DataSource = myDataSet; DataGrid1.DataBind(); }
Измените строка подключения соответствующим образом для вашей среды.
Создайте проект и просмотрите страницу .aspx в браузере. Обратите внимание, что сетка данных не отображается.
Действия по воспроизведению поведения — заголовок сетки данных отображается, но сетка данных пуста
Создайте проект веб-приложения ASP.NET в Visual Basic .NET или Visual C# .NET.
Перетащите
DataGrid
элемент управления из панели элементов и перетащите элемент управления в форму.Добавьте элемент управления в
SqlDataAdapter
веб-форму. Выполните следующие действия в мастере настройки DataAdapter, чтобы задать свойства подключения:Выберите "Создать подключение", чтобы создать новое подключение к базе данных SQL Server. Выберите сервер, введите сведения о входе и выберите базу данных Pubs.
В разделе "Тип запроса" выберите инструкции SQL и нажмите кнопку "Далее".
Введите следующую инструкцию SQL:
Select * From Authors
Нажмите Готово.
Щелкните правой кнопкой мыши dataAdapter и выберите " Создать набор данных".
DataSource
Задайте свойство создаваемогоDataGrid
набора данных.В конструкторе дважды щелкните страницу .aspx, чтобы открыть окно за кодом. Добавьте следующий код в событие
Page_Load
:DataGrid1.DataBind()
DataGrid1.DataBind();
Создайте проект и просмотрите страницу .aspx в браузере.
Примечание.
Появится заголовок сетки данных, но сетка данных не содержит никаких данных.
Ссылки
Дополнительные сведения об элементе DataGrid
управления и примерах, использующих этот элемент управления, см . в разделе "Класс DataGrid".