Esporta (0) Stampa
Espandi tutto

Classe DataGridTableStyle

Aggiornamento: novembre 2007

Rappresenta la tabella disegnata dal controllo System.Windows.Forms.DataGrid in fase di esecuzione.

Spazio dei nomi:  System.Windows.Forms
Assembly:  System.Windows.Forms (in System.Windows.Forms.dll)

public class DataGridTableStyle : Component, 
	IDataGridEditingService
public class DataGridTableStyle extends Component implements IDataGridEditingService
public class DataGridTableStyle extends Component implements IDataGridEditingService

Il controllo System.Windows.Forms.DataGrid visualizza i dati in forma di griglia. La classe DataGridTableStyle rappresenta solo la griglia disegnata. Non confondere questa griglia con la classe DataTable che può rappresentare un'origine di dati per la griglia. La classe DataGridTableStyle, invece, rappresenta esclusivamente la griglia come disegnata nel controllo. Tramite la classe DataGridTableStyle è perciò possibile controllare l'aspetto della griglia di ogni oggetto DataTable. Per specificare l'oggetto DataGridTableStyle utilizzato per la visualizzazione dei dati di un particolare oggetto DataTable, impostare la proprietà MappingName sulla proprietà TableName di una DataTable.

L'insieme GridTableStylesCollection recuperato mediante la proprietà TableStyles contiene tutti gli oggetti DataGridTableStyle utilizzati da un controllo System.Windows.Forms.DataGrid. L'insieme può contenere un numero illimitato di oggetti DataGridTableStyle, ma la proprietà MappingName di ciascun oggetto deve essere univoca. In fase di esecuzione, ciò consente di applicare un diverso DataGridTableStyle agli stessi dati, in base alle preferenze dell'utente. Per eseguire questa operazione:

  1. Compilare l'insieme GridTableStylesCollection inserendovi oggetti DataGridTableStyle. Se nell'insieme GridTableStylesCollection esiste un oggetto DataGridTableStyle la cui proprietà MappingName è uguale al valore della proprietà TableName dell'oggetto DataTable, la DataTable verrà visualizzata con tale DataGridTableStyle . Se non esiste alcun oggetto DataGridTableStyle con proprietà MappingName come descritto sopra, la griglia dei dati dell'oggetto DataTable verrà visualizzata secondo lo stile predefinito.

  2. Se si desidera visualizzare la griglia con un diverso stile, utilizzare la proprietà Item per selezionare lo DataGridTableStyle appropriato (passare TableName alla proprietà Item) e impostare la proprietà MappingName dell'oggetto visualizzato su un nuovo valore.

  3. Utilizzare la proprietà Item per selezionare lo DataGridTableStyle desiderato, quindi impostarne la proprietà MappingName sul valore TableName della DataTable.

Attenzione:

Creare sempre oggetti DataGridColumnStyle e aggiungerli all'insieme GridColumnStylesCollection prima di aggiungere oggetti DataGridTableStyle all'GridTableStylesCollection. Quando si aggiunge all'insieme un oggetto DataGridTableStyle vuoto con un valore MappingName valido, vengono automaticamente generati oggetti DataGridColumnStyle. Di conseguenza, se si tenta di aggiungere all'oggetto GridColumnStylesCollection nuovi oggetti DataGridColumnStyle con valori MappingName duplicati, verrà generata un'eccezione.

Per determinare lo DataGridTableStyle attualmente visualizzato, utilizzare le proprietà DataSource e DataMember dell'oggetto System.Windows.Forms.DataGrid per restituire un oggetto CurrencyManager . Se l'origine dati implementa l'interfaccia ITypedList, è possibile utilizzare il metodo GetListName per visualizzare la proprietà MappingName della tabella corrente come illustrato nel codice C# riportato di seguito.

 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));
 }

Se l'oggetto DataSet contiene oggetti DataTable correlati attraverso oggetti DataRelation e la DataTable attualmente visualizzata è una tabella figlio, la proprietà DataMember restituirà, nel caso più semplice, una stringa del tipo TableName.RelationName. Se l'oggetto DataTable occupa una posizione inferiore nella gerarchia, la stringa includerà il nome della tabella padre seguito dai valori della proprietà RelationName necessari per raggiungere il livello della tabella. Si supponga, ad esempio, che una struttura gerarchica sia composta da tre oggetti DataTable, denominati Regions, Customers e Orders (dal livello superiore a scendere), e da due oggetti DataRelation denominati RegionsToCustomers e CustomersToOrders, la proprietà DataMember restituirà la stringa "Regions.RegionsToCustomers.CustomersToOrders". Il MappingName, tuttavia, sarà "Orders".

L'insieme di oggetti DataGridTableStyle viene visualizzato attraverso la proprietà TableStyles dell'oggetto System.Windows.Forms.DataGrid.

Quando un oggetto DataGridTableStyle è visualizzato, le impostazioni relative a tale oggetto DataGridTableStyle eseguiranno l'override delle impostazioni relative al controllo System.Windows.Forms.DataGrid. Se un valore non è impostato per una particolare proprietà dell'oggetto DataGridTableStyle, verrà utilizzato il valore del controllo System.Windows.Forms.DataGrid. Nell'elenco seguente sono riportate le proprietà dell'oggetto DataGridColumnStyle che, se impostate, eseguono l'override delle proprietà del controllo System.Windows.Forms.DataGrid:

Per associare l'oggetto DataGrid a una matrice di oggetti fortemente tipizzata, è necessario che il tipo dell'oggetto disponga di proprietà pubbliche. Per creare un oggetto DataGridTableStyle in cui sia visualizzata la matrice, impostare la proprietà DataGridTableStyle.MappingName su typename, dove typename è sostituito dal nome del tipo di oggetto. La proprietà MappingName è soggetta alla distinzione tra maiuscole e minuscole. Il nome del tipo deve avere una corrispondenza esatta. Per un esempio, vedere la proprietà MappingName.

È anche possibile associare l'oggetto DataGrid a un oggetto ArrayList. Una caratteristica dell'oggetto ArrayList è che può contenere oggetti di tipo diverso; tuttavia, l'oggetto DataGrid potrà essere associato a questo genere di elenco solo quando tutti gli elementi in esso contenuti sono dello stesso tipo del primo. Pertanto, è necessario che tutti gli oggetti siano dello stesso tipo o che ereditino dalla stessa classe del primo elemento in elenco. Se, ad esempio, il primo elemento di un elenco è un oggetto Control, il secondo potrebbe essere un oggetto TextBox, il quale eredita da Control. Se, invece, il primo elemento è un oggetto TextBox, il secondo non potrà essere un oggetto Control. La classe ArrayList, inoltre, deve contenere elementi quando viene associata e gli oggetti nella classe DataGridTableStyle devono disporre di proprietà pubbliche. Se l'elenco ArrayList è vuoto, verrà generata una griglia vuota. Quando si associa un oggetto ArrayList, impostare la proprietà MappingName dell'oggetto DataGridTableStyle su "ArrayList", ossia il nome del tipo.

Nell'esempio di codice riportato di seguito vengono create due istanze di DataGridTableStyle e viene impostata la proprietà MappingName di ciascun oggetto su TableName di un oggetto DataTable contenuto in un oggetto DataSet. Nell'esempio inoltre verranno aggiunti oggetti DataGridColumnStyle all'insieme GridColumnStylesCollection di ciascun oggetto DataGridTableStyle. Per un esempio eseguibile, vedere l'esempio relativo all'oggetto System.Windows.Forms.DataGrid.

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);
   }



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


Qualsiasi membro static (Shared in Visual Basic) pubblico di questo tipo è thread-safe. I membri di istanza non sono garantiti come thread-safe.

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

.NET Framework e .NET Compact Framework non supportano tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.

.NET Framework

Supportato in: 3.5, 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Supportato in: 3.5, 2.0, 1.0

Aggiunte alla community

AGGIUNGI
Mostra:
© 2014 Microsoft