Dela via


Översikt över DataGrid-kontroll (Windows-formulär)

Anmärkning

Den DataGridView kontrollen ersätter och lägger till funktioner i DataGrid-kontrollen. Den DataGrid kontrollen behålls dock för både bakåtkompatibilitet och framtida användning, om du väljer det. För mer information, se Skillnader mellan Windows Forms DataGridView- och DataGrid-kontrollerna.

Kontrollen Windows Forms DataGrid visar data i en serie rader och kolumner. Det enklaste fallet är när rutnätet är bundet till en datakälla med en enda tabell som inte innehåller några relationer. I så fall visas data i enkla rader och kolumner, som i ett kalkylblad. Mer information om hur du binder data till andra kontroller finns i Databindning och Windows Forms.

Om DataGrid är bunden till data med flera relaterade tabeller, och om navigering är aktiverat i rutnätet, visar rutnätet expanderare på varje rad. Med en expander kan användaren flytta från en överordnad tabell till en underordnad tabell. När du klickar på en nod visas den underordnade tabellen och om du klickar på en bakåtknapp visas den ursprungliga överordnade tabellen. På så sätt visar rutnätet de hierarkiska relationerna mellan tabeller.

Följande skärmbild visar ett DataGrid som är bundet till data med flera tabeller:

En WinForms-app som visar ett DataGrid som är bundet till data med flera tabeller.

DataGrid kan tillhandahålla ett användargränssnitt för en datauppsättning, navigering mellan relaterade tabeller och omfattande formaterings- och redigeringsfunktioner.

Visning och manipulering av data är separata funktioner: Kontrollen hanterar användargränssnittet, medan datauppdateringar hanteras av databindningsarkitekturen i Windows Forms och av .NET Framework-dataprovidrar. Därför är flera kontroller som är bundna till samma datakälla synkroniserade.

Anmärkning

Om du är bekant med DataGrid-kontrollen i Visual Basic 6.0 hittar du några betydande skillnader i Windows Forms DataGrid kontroll.

När rutnätet är bundet till en DataSetskapas kolumnerna och raderna automatiskt, formateras och fylls. Mer information finns i Databindning och Windows Forms. Efter genereringen av DataGrid kontroll kan du lägga till, ta bort, ordna om och formatera kolumner och rader beroende på dina behov.

Binda data till en kontroll

För att DataGrid-kontrollen ska fungera bör den vara bunden till en datakälla med hjälp av egenskaperna DataSource och DataMember vid designtillfället eller SetDataBinding-metoden vid körning. Den här bindningen pekar DataGrid på ett instansierat datakällobjekt, till exempel en DataSet eller DataTable). Kontrollen DataGrid visar resultatet av åtgärder som utförs på data. De flesta dataspecifika åtgärder utförs inte via DataGrid , utan i stället via datakällan.

Om data i den bundna datamängden uppdateras via någon mekanism återspeglar DataGrid kontrollen ändringarna. Om datarutnätet och dess tabellformat och kolumnformat har egenskapen ReadOnly inställd på falsekan data i datamängden uppdateras via DataGrid-kontrollen.

Endast en tabell kan visas i DataGrid i taget. Om en överordnad-underordnad relation definieras mellan tabeller kan användaren flytta mellan de relaterade tabellerna för att välja den tabell som ska visas i kontrollen DataGrid. Information om hur du binder en DataGrid-kontroll till en ADO.NET-datakälla vid design- eller körtid finns i avsnittet Så här: Binda Windows Forms DataGrid-kontrollen till en datakälla.

Giltiga datakällor för DataGrid omfattar:

Om källan är en datauppsättning kan datauppsättningen vara ett objekt i formuläret eller ett objekt som skickas till formuläret av en XML-webbtjänst. Du kan binda till antingen inskrivna eller otypade datauppsättningar.

Du kan också binda en DataGrid kontroll till ytterligare strukturer om objekten i strukturen, till exempel elementen i en matris, exponerar offentliga egenskaper. Rutnätet visar alla publika egenskaper för elementen i strukturen. Om du till exempel binder kontrollen DataGrid till en matris med kundobjekt, visar rutnätet alla offentliga egenskaper för dessa kundobjekt. I vissa fall innebär det att även om du kan binda till strukturen kanske den resulterande bundna strukturen inte har någon praktisk tillämpning. Du kan till exempel binda till en matris med heltal, men eftersom Integer datatypen inte stöder en offentlig egenskap kan rutnätet inte visa några data.

Du kan binda till följande strukturer om deras element exponerar offentliga egenskaper:

  • Alla komponenter som implementerar IList-gränssnittet. Detta inkluderar matriser med en dimension.

  • Alla komponenter som implementerar IListSource-gränssnittet.

  • Alla komponenter som implementerar IBindingList-gränssnittet.

Mer information om möjliga datakällor finns i datakällor som stöds av Windows Forms.

Rutnätsvisning

En vanlig användning av DataGrid-kontrollen är att visa en enda tabell med data från en datauppsättning. Kontrollen kan dock också användas för att visa flera tabeller, inklusive relaterade tabeller. Rutnätets visning justeras automatiskt enligt datakällan. I följande tabell visas vad som visas för olika konfigurationer.

Innehållet i datauppsättningen Vad visas
Enkel tabell. Tabellen visas i ett rutnät.
Flera tabeller. Rutnätet kan visa en trädvy som användarna kan navigera till för att hitta den tabell som de vill visa.
Flera relaterade tabeller. Rutnätet kan visa en trädvy att välja tabeller med, eller så kan du ange att rutnätet ska visa den överordnade tabellen. Med poster i den överordnade tabellen kan användarna navigera till relaterade underordnade rader.

Anmärkning

Tabeller i en datauppsättning är relaterade med hjälp av en DataRelation. Se även Skapa relationer mellan datauppsättningar.

När DataGrid-kontrollen visar en tabell och egenskapen AllowSorting är inställd på truekan data sorteras om genom att klicka på kolumnrubrikerna. Användaren kan också lägga till rader och redigera celler.

Relationerna mellan en uppsättning tabeller visas för användare med hjälp av en överordnad/underordnad navigeringsstruktur. Överordnade tabeller är den högsta datanivån och underordnade tabeller är de datatabeller som härleds från de enskilda listorna i de överordnade tabellerna. Expandrar visas på varje överordnad rad som innehåller en underordnad tabell. Om du klickar på en expander genereras en lista med webbliknande länkar till de underordnade tabellerna. När användaren väljer en länk visas den underordnade tabellen. Om du klickar på ikonen visa/dölj överordnade rader (Ikonen Visa/dölj överordnade rader) döljs informationen om den överordnade tabellen eller så visas den igen om användaren tidigare har dolt den. Användaren kan klicka på en bakåtknapp för att gå tillbaka till tabellen som visades tidigare.

Kolumner och rader

DataGrid består av en samling DataGridTableStyle objekt som finns i DataGrid-kontrollens egenskap TableStyles. Ett tabellformat kan innehålla en samling DataGridColumnStyle objekt som finns i egenskapen GridColumnStyles för DataGridTableStyle.. Du kan redigera egenskaperna TableStyles och GridColumnStyles med hjälp av samlingsredigerare som nås via fönstret Egenskaper.

Alla DataGridTableStyle som är associerade med DataGrid-kontrollen kan nås via GridTableStylesCollection. GridTableStylesCollection kan redigeras i designern med DataGridTableStyle samlingsredigeraren eller programmatiskt via DataGrid-kontrollens egenskap TableStyles.

Följande bild visar de objekt som ingår i DataGrid-kontrollen:

diagram som visar objekt som ingår i DataGrid-kontrollen.

Tabellformat och kolumnformat synkroniseras med DataTable objekt och DataColumn objekt genom att ange deras egenskaper för MappingName till lämpliga egenskaper för TableName och ColumnName. När en DataGridTableStyle som inte har några kolumnformat läggs till i en DataGrid kontroll som är bunden till en giltig datakälla, och egenskapen MappingName för det tabellformatet är inställd på en giltig egenskap TableName skapas en samling DataGridColumnStyle objekt för tabellformatet. För varje DataColumn som finns i Columns samling av DataTableläggs motsvarande DataGridColumnStyle till i GridColumnStylesCollection. GridColumnStylesCollection nås via egenskapen GridColumnStyles för DataGridTableStyle. Kolumner kan läggas till eller tas bort från rutnätet med hjälp av metoden Add eller RemoveGridColumnStylesCollection. För mer information, se Hur du: Lägger till tabeller och kolumner i Windows Forms DataGrid Control och Hur du: Tar bort eller döljer kolumner i Windows Forms DataGrid Control.

En samling kolumntyper utökar klassen DataGridColumnStyle med omfattande formaterings- och redigeringsfunktioner. Alla kolumntyper ärver från basklassen DataGridColumnStyle. Vilken klass som skapas beror på egenskapen DataType för den DataColumn som DataGridColumn baseras på. En DataColumn som har sin DataType-egenskap inställd på Boolean associeras med DataGridBoolColumn. I följande tabell beskrivs var och en av dessa kolumntyper.

Kolumntyp Beskrivning
DataGridTextBoxColumn Accepterar och visar data som formaterade eller oformaterade strängar. Redigeringsfunktionerna är desamma som för redigering av data i en enkel TextBox. Ärver från DataGridColumnStyle.
DataGridBoolColumn Accepterar och visar värden för true, falseoch null. Ärver från DataGridColumnStyle.

Om du dubbelklickar på högerkanten i en kolumn ändrar du storlek på kolumnen för att visa dess fullständiga bildtext och bredaste post.

Tabellformat och kolumnformat

Så snart du har upprättat standardformatet för DataGrid-kontrollen kan du anpassa de färger som ska användas när vissa tabeller visas i datarutnätet.

Detta uppnås genom att skapa instanser av klassen DataGridTableStyle. Tabellformat anger formatering av specifika tabeller, vilket skiljer sig från standardformateringen för själva DataGrid kontrollen. Varje tabell får bara ha ett tabellformat som definierats för den i taget.

Ibland vill du att en specifik kolumn ska se annorlunda ut än resten av kolumnerna i en viss datatabell. Du kan skapa en anpassad uppsättning kolumnformat med hjälp av egenskapen GridColumnStyles.

Kolumnformat är relaterade till kolumner i en datauppsättning precis som tabellformat är relaterade till datatabeller. Precis som varje tabell kanske bara har ett tabellformat definierat för den i taget, så kan även varje kolumn bara ha ett kolumnformat definierat för den, i ett visst tabellformat. Den här relationen definieras i kolumnens egenskap MappingName.

Om du har skapat ett tabellformat utan att inkludera kolumnformat, kommer Visual Studio att lägga till standardkolumnformat när formuläret och rutnätet skapas vid körningstid. Men om du har skapat ett tabellformat och lagt till några kolumnformat i det, kommer Visual Studio inte att skapa några kolumnformat. Du måste också definiera kolumnformat och tilldela dem med mappningsnamnet för att de kolumner som du vill ska visas i rutnätet.

Eftersom du anger vilka kolumner som ska ingå i datarutnätet genom att tilldela dem ett kolumnformat och inget kolumnformat har tilldelats till kolumnerna, kan du inkludera datakolumner i datauppsättningen som inte visas i rutnätet. Men eftersom datakolumnen ingår i datauppsättningen kan du programmatiskt redigera de data som inte visas.

Anmärkning

I allmänhet skapar du kolumnformat och lägger till dem i samlingen med kolumnformat innan du lägger till tabellformat i tabellformatsamlingen. När du lägger till ett tomt tabellformat i samlingen genereras kolumnformat automatiskt åt dig. Därför utlöses ett undantag om du försöker lägga till nya kolumnformat med duplicerade MappingName värden i kolumnformatsamlingen.

Ibland vill du bara justera en kolumn bland många kolumner. Datamängden innehåller till exempel 50 kolumner och du vill bara ha 49 av dem. I det här fallet är det enklare att importera alla 50 kolumner och programmatiskt ta bort en, i stället för att programmatiskt lägga till var och en av de 49 enskilda kolumner som du vill ha.

Formatera

Formatering som kan tillämpas på DataGrid kontroll omfattar kantlinjer, stödlinjeformat, teckensnitt, bildtextegenskaper, datajustering och alternerande bakgrundsfärger mellan rader. Mer information finns i Hur man formaterar Windows Forms DataGrid-kontrollen.

Evenemang

Förutom vanliga kontrollhändelser som MouseDown, Enteroch Scrollstöder DataGrid-kontrollen händelser som är associerade med redigering och navigering i rutnätet. Egenskapen CurrentCell avgör vilken cell som är markerad. Händelsen CurrentCellChanged utlöses när användaren navigerar till en ny cell. När användaren navigerar till en ny tabell via föräldra/barn-relationer genereras Navigate-händelsen. Händelsen BackButtonClick utlöses när användaren klickar på bakåtknappen när användaren visar en underordnad tabell och händelsen ShowParentDetailsButtonClick utlöses när ikonen visa/dölj överordnade rader klickas.

Se även