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.SqlClient
Microsoft .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
DataSource
DataGrid
kontrollen. EllerDu anropar
DataBind
inte -metoden förDataGrid
kontrollen ellerDataBind
-metoden förPage
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
DataSource
Ange egenskapen för så att denDataGrid
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
egenskapenDataGrid
för .Om du använder designern för att lägga till en
DataAdapter
i webbformuläret och generera en datauppsättning öppnarDataGrid
du egenskapssidan och väljer sedan lämpligtDataSet
objekt ellerDataView
objekt iDataSource
egenskapen .DataBind
Anropa -metoden förDataGrid
kontrollen ellerDataBind
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
Kontrollera att datakällan innehåller data och att frågan returnerar data.
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
Skapa ett nytt ASP.NET webbprogramprojekt i Visual Basic .NET eller Visual C# .NET.
Dra en
DataGrid
kontroll från verktygslådan och släpp kontrollen i formuläret.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;
Ersätt koden i händelsen
Form_Load
med följande kod:Obs!
Du måste ändra
uid = <username>
ochpwd = <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(); }
Ändra anslutningssträngen efter behov för din miljö.
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
Skapa ett nytt ASP.NET webbprogramprojekt i Visual Basic .NET eller Visual C# .NET.
Dra en
DataGrid
kontroll från verktygslådan och släpp kontrollen i formuläret.Lägg till en
SqlDataAdapter
kontroll i webbformuläret. Utför följande steg i konfigurationsguiden för DataAdapter för att ange anslutningsegenskaperna: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.
Under Frågetyp väljer du SQL-uttryck och sedan Nästa.
Skriv följande SQL-instruktion:
Select * From Authors
Välj Slutför.
Högerklicka på DataAdapter och välj sedan Generera datauppsättning.
DataSource
Ange egenskapen förDataGrid
till den datauppsättning som genereras.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();
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.
Feedback
Skicka och visa feedback för