Freigeben über


DataGridTableStyle-Klasse

Stellt die zur Laufzeit vom System.Windows.Forms.DataGrid-Steuerelement gezeichnete Tabelle dar.

Namespace: System.Windows.Forms
Assembly: System.Windows.Forms (in system.windows.forms.dll)

Syntax

'Declaration
Public Class DataGridTableStyle
    Inherits Component
    Implements IDataGridEditingService
'Usage
Dim instance As DataGridTableStyle
public class DataGridTableStyle : Component, IDataGridEditingService
public ref class DataGridTableStyle : public Component, IDataGridEditingService
public class DataGridTableStyle extends Component implements IDataGridEditingService
public class DataGridTableStyle extends Component implements IDataGridEditingService

Hinweise

Im System.Windows.Forms.DataGrid-Steuerelement werden Daten in Form einer Tabelle angezeigt. DataGridTableStyle ist eine Klasse, die ausschließlich die gezeichnete Tabelle darstellt. Diese Tabelle darf nicht mit der DataTable-Klasse verwechselt werden, die eine mögliche Quelle für die Daten der Tabelle ist. DataGridTableStyle stellt dagegen die Tabelle genau so dar, wie sie vom Steuerelement gezeichnet wird. Daher können Sie mit DataGridTableStyle die Darstellung der Tabelle für jede DataTable steuern. Um den DataGridTableStyle anzugeben, der für die Anzeige von Daten aus einer bestimmten DataTable verwendet wird, legen Sie den MappingName auf den TableName einer DataTable fest.

Die über die TableStyles-Eigenschaft abgerufene GridTableStylesCollection enthält alle von einem System.Windows.Forms.DataGrid-Steuerelement verwendeten DataGridTableStyle-Objekte. Die Auflistung kann beliebig viele DataGridTableStyle-Objekte enthalten. Der MappingName der einzelnen Objekte muss jedoch eindeutig sein. Auf diese Weise können Sie zur Laufzeit je nach Benutzereinstellung für dieselben Daten unterschiedliche DataGridTableStyle verwenden. Gehen Sie wie folgt vor:

  1. Füllen Sie die GridTableStylesCollection mit DataGridTableStyle-Objekten. Wenn die GridTableStylesCollection einen DataGridTableStyle enthält, dessen MappingName-Eigenschaftenwert der TableName-Eigenschaft des DataTable-Objekts entspricht, wird die DataTable mit diesem DataGridTableStyle angezeigt. Wenn kein DataGridTableStyle mit einem übereinstimmenden MappingName vorhanden ist, wird die DataTable mit dem Standardformat für Datenblatttabellen angezeigt.

  2. Wenn ein anderes Tabellenformat erforderlich ist, verwenden Sie die Item-Eigenschaft, um den entsprechenden DataGridTableStyle auszuwählen, d. h., übergeben Sie den TableName an die Item-Eigenschaft, und legen Sie den MappingName des zurückgegebenen Objekts auf einen neuen Wert fest.

  3. Verwenden Sie die Item-Eigenschaft, um den gewünschten DataGridTableStyle auszuwählen, und legen Sie seinen MappingName auf den TableName der DataTable fest.

Warnung

Erstellen Sie vor dem Hinzufügen von DataGridTableStyle-Objekten zur GridTableStylesCollection immer DataGridColumnStyle-Objekte, und fügen Sie diese der GridColumnStylesCollection hinzu. Wenn Sie der Auflistung einen leeren DataGridTableStyle mit einem gültigen MappingName-Wert hinzufügen, werden automatisch DataGridColumnStyle-Objekte generiert. Folglich wird beim Versuch, der GridColumnStylesCollection neue DataGridColumnStyle-Objekte mit doppelten MappingName-Werten hinzuzufügen, eine Ausnahme ausgelöst.

Verwenden Sie zum Bestimmen des derzeit angezeigten DataGridTableStyle die DataSource-Eigenschaft und die DataMember-Eigenschaft von System.Windows.Forms.DataGrid, um CurrencyManager zurückzugeben. Wenn die Datenquelle die ITypedList-Schnittstelle implementiert, können Sie mit der GetListName-Methode den MappingName der aktuellen Tabelle zurückgeben. Dies wird im folgenden C#-Code dargestellt:

 private void PrintCurrentListName(DataGrid myDataGrid){
  CurrencyManager myCM = (CurrencyManager)
  BindingContext[myDataGrid.DataSource, myDataGrid.DataMember];
  IList myList = myCM.List;
  ITypedList thisList = (ITypedList) myList;
  Console.WriteLine(thisList.GetListName(null));
 }

Wenn DataSet über DataRelation-Objekte verbundene DataTable-Objekte enthält und die gegenwärtig angezeigte DataTable eine untergeordnete Tabelle ist, gibt der DataMember im einfachsten Fall eine Zeichenfolge in der Form TableName.RelationName zurück. Wenn sich die DataTable weiter unten in der Hierarchie befindet, besteht die Zeichenfolge aus dem Namen der übergeordneten Tabelle, gefolgt von den zum Erreichen der Tabellenebene erforderlichen RelationName-Werten. Angenommen, es besteht eine hierarchische Beziehung zwischen den drei DataTable-Objekten Regions, Customers und Orders (in absteigender Reihenfolge), und es sind zwei DataRelation-Objekte mit den Namen RegionsToCustomers und CustomersToOrders vorhanden. In diesem Fall gibt die DataMember-Eigenschaft "Regions.RegionsToCustomers.CustomersToOrders" zurück. Der MappingName lautet dann jedoch "Orders".

Die Auflistung von DataGridTableStyle-Objekten wird durch die TableStyles-Eigenschaft von System.Windows.Forms.DataGrid zurückgegeben.

Wenn DataGridTableStyle angezeigt wird, überschreiben die Einstellungen für den DataGridTableStyle die Einstellungen für das System.Windows.Forms.DataGrid-Steuerelement. Wenn ein Wert für eine bestimmte DataGridTableStyle-Eigenschaft nicht festgelegt ist, wird stattdessen der Wert des System.Windows.Forms.DataGrid-Steuerelements verwendet. In der folgenden Liste sind die DataGridColumnStyle-Eigenschaften aufgeführt, mit denen Eigenschaften des System.Windows.Forms.DataGrid-Steuerelement überschrieben werden können:

Das DataGrid kann nur an ein stark typisiertes Array von Objekten gebunden werden, wenn der Objekttyp öffentliche Eigenschaften enthält. Legen Sie zum Erstellen eines DataGridTableStyle, der das Array anzeigt, die DataGridTableStyle.MappingName-Eigenschaft auf typename fest, wobei typename durch den Namen des Objekttyps ersetzt wird. Bei der MappingName-Eigenschaft wird die Groß- und Kleinschreibung berücksichtigt, achten Sie daher darauf, dass der Typname exakt überstimmt. Ein Beispiel finden Sie unter der MappingName-Eigenschaft.

Sie können das DataGrid auch an eine ArrayList binden. Ein Feature der ArrayList ist, dass sie Objekte verschiedenen Typs enthalten kann. Das DataGrid kann aber nur an eine Liste gebunden werden, in der alle Elemente von demselben Typ wie das erste Element sind. Das heißt, dass alle Objekte denselben Typ haben oder von derselben Klasse erben müssen wie das erste Listenelement. Wenn z. B. das erste Element in der Liste ein Control ist, kann das zweite Element eine TextBox sein (die von Control erbt). Wenn jedoch das erste Element eine TextBox ist, kann das zweite Objekt kein Control sein. Außerdem muss die ArrayList über Elemente verfügen, wenn sie gebunden wird, und die Objekte in der DataGridTableStyle müssen öffentliche Eigenschaften enthalten. Eine leere ArrayList ergibt ein leeres Datenblatt. Legen Sie zum Binden an eine ArrayList den MappingName des DataGridTableStyle auf "ArrayList" (den Typnamen) fest.

Beispiel

Im folgenden Codebeispiel werden zwei DataGridTableStyle-Instanzen erstellt, und der MappingName der einzelnen Objekte wird auf den TableName einer DataTable in einem DataSet festgelegt. Anschließend werden im Beispiel DataGridColumnStyle-Objekte zur GridColumnStylesCollection jedes einzelnen DataGridTableStyle hinzugefügt. Ein lauffähiges Beispiel finden Sie unter System.Windows.Forms.DataGrid.

Private Sub AddCustomDataTableStyle()
    ' Create a new DataGridTableStyle and set
    ' its MappingName to the TableName of a DataTable. 
    Dim ts1 As New DataGridTableStyle()
    ts1.MappingName = "Customers"
    
    ' Add a GridColumnStyle and set its MappingName
    ' to the name of a DataColumn in the DataTable.
    ' Set the HeaderText and Width properties. 
    
    Dim boolCol As New DataGridBoolColumn()
    boolCol.MappingName = "Current"
    boolCol.HeaderText = "IsCurrent Customer"
    boolCol.Width = 150
    ts1.GridColumnStyles.Add(boolCol)
    
    ' Add a second column style.
    Dim TextCol As New DataGridTextBoxColumn()
    TextCol.MappingName = "custName"
    TextCol.HeaderText = "Customer Name"
    TextCol.Width = 250
    ts1.GridColumnStyles.Add(TextCol)

    ' Create the second table style with columns.
    Dim ts2 As New DataGridTableStyle()
    ts2.MappingName = "Orders"

    ' Change the colors.
    ts2.ForeColor = Color.Yellow
    ts2.AlternatingBackColor = Color.Blue
    ts2.BackColor = Color.Blue
    
    ' Create new DataGridColumnStyle objects.
    Dim cOrderDate As New DataGridTextBoxColumn()
    cOrderDate.MappingName = "OrderDate"
    cOrderDate.HeaderText = "Order Date"
    cOrderDate.Width = 100
    ts2.GridColumnStyles.Add(cOrderDate)
    
    Dim pcol As PropertyDescriptorCollection = Me.BindingContext(myDataSet, "Customers.custToOrders").GetItemProperties()
    
    Dim csOrderAmount As New DataGridTextBoxColumn(pcol("OrderAmount"), "c", True)
    csOrderAmount.MappingName = "OrderAmount"
    csOrderAmount.HeaderText = "Total"
    csOrderAmount.Width = 100
    ts2.GridColumnStyles.Add(csOrderAmount)

    ' Add the DataGridTableStyle objects to the collection.
    myDataGrid.TableStyles.Add(ts1)
    myDataGrid.TableStyles.Add(ts2)
End Sub 'AddCustomDataTableStyle
private void AddCustomDataTableStyle()
   {
      /* Create a new DataGridTableStyle and set
      its MappingName to the TableName of a DataTable. */
      DataGridTableStyle ts1 = new DataGridTableStyle();
      ts1.MappingName = "Customers";

      /* Add a GridColumnStyle and set its MappingName 
      to the name of a DataColumn in the DataTable. 
      Set the HeaderText and Width properties. */
      
      DataGridColumnStyle boolCol = new DataGridBoolColumn();
      boolCol.MappingName = "Current";
      boolCol.HeaderText = "IsCurrent Customer";
      boolCol.Width = 150;
      ts1.GridColumnStyles.Add(boolCol);
      
      // Add a second column style.
      DataGridColumnStyle TextCol = new DataGridTextBoxColumn();
      TextCol.MappingName = "custName";
      TextCol.HeaderText = "Customer Name";
      TextCol.Width = 250;
      ts1.GridColumnStyles.Add(TextCol);


      // Create the second table style with columns.
      DataGridTableStyle ts2 = new DataGridTableStyle();
      ts2.MappingName = "Orders";
      // Change the colors.
      ts2.ForeColor = Color.Yellow;
      ts2.AlternatingBackColor = Color.Blue;
      ts2.BackColor = Color.Blue;
      
      // Create new DataGridColumnStyle objects.
      DataGridColumnStyle cOrderDate = 
      new DataGridTextBoxColumn();
      cOrderDate.MappingName = "OrderDate";
      cOrderDate.HeaderText = "Order Date";
      cOrderDate.Width = 100;
      ts2.GridColumnStyles.Add(cOrderDate);

      PropertyDescriptorCollection pcol = this.BindingContext
      [myDataSet, "Customers.custToOrders"].GetItemProperties();
      
      DataGridColumnStyle csOrderAmount = 
      new DataGridTextBoxColumn(pcol["OrderAmount"], "c", true);
      csOrderAmount.MappingName = "OrderAmount";
      csOrderAmount.HeaderText = "Total";
      csOrderAmount.Width = 100;
      ts2.GridColumnStyles.Add(csOrderAmount);

      // Add the DataGridTableStyle objects to the collection.
      myDataGrid.TableStyles.Add(ts1);
      myDataGrid.TableStyles.Add(ts2);
   }
void AddCustomDataTableStyle()
{
   
   /* Create a new DataGridTableStyle and set
         its MappingName to the TableName of a DataTable. */
   DataGridTableStyle^ ts1 = gcnew DataGridTableStyle;
   ts1->MappingName = "Customers";
   
   /* Add a GridColumnStyle and set its MappingName 
         to the name of a DataColumn in the DataTable. 
         Set the HeaderText and Width properties. */
   DataGridColumnStyle^ boolCol = gcnew DataGridBoolColumn;
   boolCol->MappingName = "Current";
   boolCol->HeaderText = "IsCurrent Customer";
   boolCol->Width = 150;
   ts1->GridColumnStyles->Add( boolCol );
   
   // Add a second column style.
   DataGridColumnStyle^ TextCol = gcnew DataGridTextBoxColumn;
   TextCol->MappingName = "custName";
   TextCol->HeaderText = "Customer Name";
   TextCol->Width = 250;
   ts1->GridColumnStyles->Add( TextCol );
   
   // Create the second table style with columns.
   DataGridTableStyle^ ts2 = gcnew DataGridTableStyle;
   ts2->MappingName = "Orders";
   
   // Change the colors.
   ts2->ForeColor = Color::Yellow;
   ts2->AlternatingBackColor = Color::Blue;
   ts2->BackColor = Color::Blue;
   
   // Create new DataGridColumnStyle objects.
   DataGridColumnStyle^ cOrderDate = gcnew DataGridTextBoxColumn;
   cOrderDate->MappingName = "OrderDate";
   cOrderDate->HeaderText = "Order Date";
   cOrderDate->Width = 100;
   ts2->GridColumnStyles->Add( cOrderDate );
   PropertyDescriptorCollection^ pcol = this->BindingContext[ myDataSet,"Customers.custToOrders" ]->GetItemProperties();
   DataGridColumnStyle^ csOrderAmount = gcnew DataGridTextBoxColumn( pcol[ "OrderAmount" ],"c",true );
   csOrderAmount->MappingName = "OrderAmount";
   csOrderAmount->HeaderText = "Total";
   csOrderAmount->Width = 100;
   ts2->GridColumnStyles->Add( csOrderAmount );
   
   // Add the DataGridTableStyle objects to the collection.
   myDataGrid->TableStyles->Add( ts1 );
   myDataGrid->TableStyles->Add( ts2 );
}
private void AddCustomDataTableStyle()
{
    /*  Create a new DataGridTableStyle and set
        its MappingName to the TableName of a DataTable. 
     */
    DataGridTableStyle ts1 = new DataGridTableStyle();
    ts1.set_MappingName("Customers");
    /*  Add a GridColumnStyle and set its MappingName 
        to the name of a DataColumn in the DataTable. 
        Set the HeaderText and Width properties. 
     */
    
    DataGridColumnStyle boolCol = new DataGridBoolColumn();
    boolCol.set_MappingName("Current");
    boolCol.set_HeaderText("IsCurrent Customer");
    boolCol.set_Width(150);
    ts1.get_GridColumnStyles().Add(boolCol);

    // Add a second column style.
    DataGridColumnStyle textCol = new DataGridTextBoxColumn();
    textCol.set_MappingName("custName");
    textCol.set_HeaderText("Customer Name");
    textCol.set_Width(250);
    ts1.get_GridColumnStyles().Add(textCol);

    // Create the second table style with columns.
    DataGridTableStyle ts2 = new DataGridTableStyle();
    ts2.set_MappingName("Orders");
    // Change the colors.
    ts2.set_ForeColor(Color.get_Yellow());
    ts2.set_AlternatingBackColor(Color.get_Blue());
    ts2.set_BackColor(Color.get_Blue());

    // Create new DataGridColumnStyle objects.
    DataGridColumnStyle cOrderDate = new DataGridTextBoxColumn();
    cOrderDate.set_MappingName("OrderDate");
    cOrderDate.set_HeaderText("Order Date");
    cOrderDate.set_Width(100);
    ts2.get_GridColumnStyles().Add(cOrderDate);

    PropertyDescriptorCollection pcol = 
        this.get_BindingContext().
        get_Item(myDataSet, "Customers.custToOrders").
        GetItemProperties();
    DataGridColumnStyle csOrderAmount = 
        new DataGridTextBoxColumn(pcol.get_Item("OrderAmount"), "c", true);
    csOrderAmount.set_MappingName("OrderAmount");
    csOrderAmount.set_HeaderText("Total");
    csOrderAmount.set_Width(100);
    ts2.get_GridColumnStyles().Add(csOrderAmount);

    // Add the DataGridTableStyle objects to the collection.
    myDataGrid.get_TableStyles().Add(ts1);
    myDataGrid.get_TableStyles().Add(ts2);
} //AddCustomDataTableStyle

Vererbungshierarchie

System.Object
   System.MarshalByRefObject
     System.ComponentModel.Component
      System.Windows.Forms.DataGridTableStyle

Threadsicherheit

Alle öffentlichen statischen (Shared in Visual Basic) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Plattformen

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

.NET Compact Framework

Unterstützt in: 2.0, 1.0

Siehe auch

Referenz

DataGridTableStyle-Member
System.Windows.Forms-Namespace
DataGrid-Klasse
DataGridColumnStyle-Klasse
GridColumnStylesCollection
GridTableStylesCollection