Freigeben über


Das DataGrid-Steuerelement wird auf .aspx Seite nicht ordnungsgemäß angezeigt.

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 des DataGrid Steuerelements nicht fest. Oder

  • Sie rufen die DataBind Methode des DataGrid Steuerelements oder der DataBind Methode des Page 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

  1. Legen Sie die DataSource Eigenschaft des DataGrid 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

  2. Wenn Sie mit dem Designer ein Webformular hinzufügen DataAdapter und ein Dataset generieren möchten, öffnen Sie die DataGrid Eigenschaftenseite, und wählen Sie dann das entsprechende DataSet Objekt DataView in der DataSource Eigenschaft aus.

  3. Rufen Sie die DataBind Methode des Steuerelements DataGrid oder der DataBind 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

  1. Stellen Sie sicher, dass Ihre Datenquelle Daten enthält und dass ihre Abfrage Daten zurückgibt.

  2. 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

  1. Erstellen Sie ein neues ASP.NET Webanwendungsprojekt in Visual Basic .NET oder Visual C# .NET.

  2. Ziehen Sie ein DataGrid Steuerelement aus der Toolbox, und legen Sie das Steuerelement auf das Formular ab.

  3. 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;
    
  4. 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();
    }
    
  5. Ändern Sie die Verbindungszeichenfolge entsprechend Ihrer Umgebung.

  6. 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.

  1. Erstellen Sie ein neues ASP.NET Webanwendungsprojekt in Visual Basic .NET oder Visual C# .NET.

  2. Ziehen Sie ein DataGrid Steuerelement aus der Toolbox, und legen Sie das Steuerelement auf das Formular ab.

  3. Fügen Sie dem Webformular ein SqlDataAdapter Steuerelement hinzu. Führen Sie die folgenden Schritte im DataAdapter-Konfigurations-Assistenten aus, um die Verbindungseigenschaften festzulegen:

    1. 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.

    2. Wählen Sie unter "Abfragetyp" die Option "SQL-Anweisungen" und dann "Weiter" aus.

    3. Geben Sie die folgende SQL-Anweisung ein:

      Select * From Authors
      
    4. Wählen Sie Fertig stellenaus.

  4. Klicken Sie mit der rechten Maustaste auf den DataAdapter, und wählen Sie dann "Dataset generieren" aus.

  5. Legen Sie die DataSource Eigenschaft des DataGrid Datasets fest, das generiert wird.

  6. 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();
    
  7. 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.