DataGrid-kontrollen visas inte korrekt på .aspx-sidan

Den här artikeln hjälper dig att lösa problemet med att datarutnätet kanske inte visas när du visar en .aspx-sida som innehåller en DataGrid-kontroll. Den här artikeln refererar till namnområdet System.Data.SqlClientMicrosoft .NET Framework-klassbibliotek .

Ursprunglig produktversion: ASP.NET
Ursprungligt KB-nummer: 313156

Symptom

När du visar en .aspx-sida som innehåller en DataGrid kontroll kanske inte datarutnätet visas. Alternativt kan endast rubriken i datarutnätet visas, men datarutnätet kanske inte innehåller några data.

Orsak 1: Datarutnät visas inte

Datarutnätet visas inte alls om:

  • Du anger inte egenskapen för DataSourceDataGrid kontrollen. Eller

  • Du anropar DataBind inte -metoden för DataGrid kontrollen eller DataBind -metoden för Page objektet från din kod.

Orsak 2: Datarutnätsrubriken visas men datarutnätet är tomt

Datarutnätsrubriken visas, men datarutnätet innehåller inga data om:

  • Datakällan innehåller inga data. Eller

  • Du fyller inte i den datauppsättning som är bunden till DataGrid med data vid körning.

    Obs!

    Du måste skriva kod för att uttryckligen fylla i datauppsättningen DataGrid så att fylls med data från databasen vid körning. Du kan göra detta när du använder designern för att lägga till DataAdapter-objektet och generera en datauppsättning vid designtillfället.

Det här problemet beror på att sidan .aspx hämtar information om rubrikfälten från filen DataSetName.xsd . Filen DataSetName.xsd skapas för varje datauppsättning när du genererar en datauppsättning vid designtillfället. Den här filen innehåller XML-representationen (Extensible Markup Language) för datauppsättningen. Sidan .aspx hämtar rubrikfältets information från den här filen. Därför visas datarutnätsrubriken men datarutnätet är tomt.

Lösning för orsak 1

  1. DataSource Ange egenskapen för så att den DataGrid pekar på lämplig datakälla. Till exempel:

    DataGrid1.DataSource = dataSet11.Tables("Authors")
    
    DataGrid1.DataSource = dataSet11.Tables["Authors"] ;
    

    Obs!

    Om du programmatiskt hämtar data från datakällan tilldelar du datakällan till DataSource egenskapen DataGridför .

  2. Om du använder designern för att lägga till en DataAdapter i webbformuläret och generera en datauppsättning öppnar DataGrid du egenskapssidan och väljer sedan lämpligt DataSet objekt eller DataView objekt i DataSource egenskapen .

  3. DataBind Anropa -metoden för DataGrid kontrollen eller DataBind metoden för sidobjektet. Till exempel:

    'Use one of the following lines.
    'Page.DataBind()
    DataGrid1.DataBind()
    
    //Use one of the following lines.
    //Page.DataBind();
    DataGrid1.DataBind();
    

Lösning för orsak 2

  1. Kontrollera att datakällan innehåller data och att frågan returnerar data.

  2. Använd a DataAdapter för att fylla i datauppsättningen. Till exempel:

    sqlDataAdapter1.Fill(dataSet11, "Authors")
    
    sqlDataAdapter1.Fill(dataSet11,"Authors");
    
    

Status

Detta är avsiktligt.

Mer information

DataGrid Binda webbserverkontrollen till en datakälla via DataSource egenskapen DataGrid för för att korrekt återge datarutnätet på sidan. När du har angett datakällan måste du också uttryckligen DataBind anropa -metoden DataGrid för kontrollen eller DataBind -metoden för Page objektet från koden.

Steg för att återskapa beteendet – datarutnät visas inte

  1. Skapa ett nytt ASP.NET webbprogramprojekt i Visual Basic .NET eller Visual C# .NET.

  2. Dra en DataGrid kontroll från verktygslådan och släpp kontrollen i formuläret.

  3. Dubbelklicka på sidan .aspx i designern för att öppna fönstret bakom koden. Lägg till följande kod överst i fönstret bakom koden för att lägga till nödvändiga namnområdesreferenser:

    Imports System.Data
    Imports System.Data.SqlClient
    
    using System.Data.SqlClient;
    
  4. Ersätt koden i händelsen Form_Load med följande kod:

    Obs!

    Du måste ändra uid = <username> och pwd = <strong password> till rätt värden innan du kör den här koden. Se till att UID har rätt behörigheter för att utföra den här åtgärden på databasen.

    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. Ändra anslutningssträngen efter behov för din miljö.

  6. Skapa projektet och visa sedan .aspx-sidan i webbläsaren. Observera att datarutnätet inte visas.

Steg för att återskapa beteendet – datarutnätsrubriken visas men datarutnätet är tomt

  1. Skapa ett nytt ASP.NET webbprogramprojekt i Visual Basic .NET eller Visual C# .NET.

  2. Dra en DataGrid kontroll från verktygslådan och släpp kontrollen i formuläret.

  3. Lägg till en SqlDataAdapter kontroll i webbformuläret. Utför följande steg i konfigurationsguiden för DataAdapter för att ange anslutningsegenskaperna:

    1. Välj Ny anslutning för att skapa en ny anslutning till SQL Server-databasen. Välj servern, skriv inloggningsinformationen och välj sedan databasen Pubar.

    2. Under Frågetyp väljer du SQL-uttryck och sedan Nästa.

    3. Skriv följande SQL-instruktion:

      Select * From Authors
      
    4. Välj Slutför.

  4. Högerklicka på DataAdapter och välj sedan Generera datauppsättning.

  5. DataSource Ange egenskapen för DataGrid till den datauppsättning som genereras.

  6. Dubbelklicka på sidan .aspx i designern för att öppna fönstret bakom koden. Lägg till följande kod i Page_Load händelsen:

    DataGrid1.DataBind()
    
    DataGrid1.DataBind();
    
  7. Skapa projektet och visa sedan .aspx-sidan i webbläsaren.

    Obs!

    Rubriken för datarutnätet visas, men datarutnätet innehåller inga data.

Referenser

Mer information om DataGrid kontrollen och exempel som använder den här kontrollen finns i DataGrid-klass.