Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Dieser Artikel hilft Ihnen beim Beheben des Problems, dass das Datenraster möglicherweise nicht angezeigt wird, wenn Sie eine .aspx Seite anzeigen, die ein DataGrid-Steuerelement enthält. Dieser Artikel bezieht sich auf den Namespace der Microsoft .NET Framework-Klassenbibliothek System.Data.SqlClient
.
Ursprüngliche Produktversion: ASP.NET
Ursprüngliche KB-Nummer: 313156
Problembeschreibung
Wenn Sie eine .aspx Seite anzeigen, die ein DataGrid
Steuerelement enthält, wird das Datenraster möglicherweise nicht angezeigt. Alternativ kann nur die Kopfzeile des Datenrasters angezeigt werden, aber das Datenraster darf keine Daten enthalten.
Ursache 1: Das Datenraster wird nicht angezeigt
Das Datenraster wird überhaupt nicht angezeigt, wenn:
Sie legen die
DataSource
Eigenschaft desDataGrid
Steuerelements nicht fest. OderSie rufen die
DataBind
Methode desDataGrid
Steuerelements oder derDataBind
Methode desPage
Objekts nicht aus Dem Code auf.
Ursache 2: Datenrasterkopf wird angezeigt, das Datenraster ist jedoch leer.
Die Datenrasterkopfzeile wird angezeigt, das Datenraster enthält jedoch keine Daten, wenn:
Die Datenquelle enthält keine Daten. Oder
Sie füllen das Dataset nicht aus, das zur Laufzeit an die
DataGrid
Daten gebunden ist.Notiz
Sie müssen Code schreiben, um das Dataset explizit auszufüllen, damit die
DataGrid
Daten aus der Datenbank zur Laufzeit aufgefüllt werden. Sie können dies tun, wenn Sie den Designer verwenden, um das DataAdapter-Objekt hinzuzufügen und ein Dataset zur Entwurfszeit zu generieren.
Dieses Problem tritt auf, da die .aspx Seite die Details der Kopfzeilenfelder aus der Datei DataSetName.xsd abruft . Die Datei DataSetName.xsd wird für jedes Dataset erstellt, wenn Sie ein Dataset zur Entwurfszeit generieren. Diese Datei enthält die XML-Darstellung (Extensible Markup Language) des Datasets. Die .aspx Seite ruft die Details des Kopfzeilenfelds aus dieser Datei ab. Daher wird die Datenrasterkopfzeile angezeigt, aber das Datenraster ist leer.
Auflösung für die Ursache 1
Legen Sie die
DataSource
Eigenschaft desDataGrid
Werts fest, der auf die entsprechende Datenquelle zeigt. Beispiel:DataGrid1.DataSource = dataSet11.Tables("Authors")
DataGrid1.DataSource = dataSet11.Tables["Authors"] ;
Notiz
Wenn Sie die Daten programmgesteuert aus der Datenquelle abrufen, weisen Sie die Datenquelle der
DataSource
Eigenschaft der .DataGrid
Wenn Sie mit dem Designer ein Webformular hinzufügen
DataAdapter
und ein Dataset generieren möchten, öffnen Sie dieDataGrid
Eigenschaftenseite, und wählen Sie dann das entsprechendeDataSet
ObjektDataView
in derDataSource
Eigenschaft aus.Rufen Sie die
DataBind
Methode des SteuerelementsDataGrid
oder derDataBind
Methode des Page-Objekts auf. Zum Beispiel:'Use one of the following lines. 'Page.DataBind() DataGrid1.DataBind()
//Use one of the following lines. //Page.DataBind(); DataGrid1.DataBind();
Auflösung für die Ursache 2
Stellen Sie sicher, dass Ihre Datenquelle Daten enthält und dass ihre Abfrage Daten zurückgibt.
Verwenden Sie eine
DataAdapter
, um das Dataset auszufüllen. Zum Beispiel:sqlDataAdapter1.Fill(dataSet11, "Authors")
sqlDataAdapter1.Fill(dataSet11,"Authors");
Status
Es handelt sich hierbei um ein beabsichtigtes Verhalten.
Weitere Informationen
Binden Sie das DataGrid
Webserversteuerelement über die DataSource
Eigenschaft des DataGrid
Webserversteuerelements an eine Datenquelle, um das Datenraster auf der Seite ordnungsgemäß zu rendern. Nachdem Sie die Datenquelle festgelegt haben, müssen Sie auch explizit die DataBind
Methode des DataGrid
Steuerelements oder der DataBind
Methode des Page
Objekts aus Dem Code aufrufen.
Schritte zum Reproduzieren des Verhaltens – Das Datenraster wird nicht angezeigt
Erstellen Sie ein neues ASP.NET Webanwendungsprojekt in Visual Basic .NET oder Visual C# .NET.
Ziehen Sie ein
DataGrid
Steuerelement aus der Toolbox, und legen Sie das Steuerelement auf das Formular ab.Doppelklicken Sie im Designer auf die .aspx Seite, um das CodeBehind-Fenster zu öffnen. Fügen Sie oben im CodeBehind-Fenster den folgenden Code hinzu, um die erforderlichen Namespaceverweise hinzuzufügen:
Imports System.Data Imports System.Data.SqlClient
using System.Data.SqlClient;
Ersetzen Sie den Code im
Form_Load
Ereignis durch den folgenden Code:Notiz
Sie müssen die richtigen Werte ändern
uid = <username>
,pwd = <strong password>
bevor Sie diesen Code ausführen. Stellen Sie sicher, dass die UID über die entsprechenden Berechtigungen zum Ausführen dieses Vorgangs für die Datenbank verfügt.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(); }
Ändern Sie die Verbindungszeichenfolge entsprechend Ihrer Umgebung.
Erstellen Sie das Projekt, und zeigen Sie dann die .aspx Seite im Browser an. Beachten Sie, dass das Datenraster nicht angezeigt wird.
Schritte zum Reproduzieren des Verhaltens : Datenrasterkopf wird angezeigt, das Datenraster ist jedoch leer.
Erstellen Sie ein neues ASP.NET Webanwendungsprojekt in Visual Basic .NET oder Visual C# .NET.
Ziehen Sie ein
DataGrid
Steuerelement aus der Toolbox, und legen Sie das Steuerelement auf das Formular ab.Fügen Sie dem Webformular ein
SqlDataAdapter
Steuerelement hinzu. Führen Sie die folgenden Schritte im DataAdapter-Konfigurations-Assistenten aus, um die Verbindungseigenschaften festzulegen:Wählen Sie "Neue Verbindung" aus, um eine neue Verbindung mit Ihrer SQL Server-Datenbank zu erstellen. Wählen Sie den Server aus, geben Sie die Anmeldeinformationen ein, und wählen Sie dann die Pubs-Datenbank aus.
Wählen Sie unter "Abfragetyp" die Option "SQL-Anweisungen" und dann "Weiter" aus.
Geben Sie die folgende SQL-Anweisung ein:
Select * From Authors
Wählen Sie Fertig stellenaus.
Klicken Sie mit der rechten Maustaste auf den DataAdapter, und wählen Sie dann "Dataset generieren" aus.
Legen Sie die
DataSource
Eigenschaft desDataGrid
Datasets fest, das generiert wird.Doppelklicken Sie im Designer auf die .aspx Seite, um das CodeBehind-Fenster zu öffnen. Fügen Sie dem
Page_Load
-Ereignis folgenden Code hinzu:DataGrid1.DataBind()
DataGrid1.DataBind();
Erstellen Sie das Projekt, und zeigen Sie dann die .aspx Seite im Browser an.
Notiz
Die Kopfzeile des Datenrasters wird angezeigt, das Datenraster enthält jedoch keine Daten.
References
Weitere Informationen zum DataGrid
Steuerelement und zu Beispielen, die dieses Steuerelement verwenden, finden Sie unter DataGrid Class.