Questa documentazione è stata archiviata e non viene gestita.

Classe DataGrid

Visualizza i dati ADO.NET in una griglia scorrevole. Il controllo DataGridView sostituisce il controllo DataGrid aggiungendovi funzionalità; tuttavia il controllo DataGrid viene mantenuto per compatibilità con le versioni precedenti e per l'eventuale uso futuro.

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

[ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch)] 
[ComVisibleAttribute(true)] 
public class DataGrid : Control, ISupportInitialize, IDataGridEditingService
/** @attribute ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch) */ 
/** @attribute ComVisibleAttribute(true) */ 
public class DataGrid extends Control implements ISupportInitialize, IDataGridEditingService
ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch) 
ComVisibleAttribute(true) 
public class DataGrid extends Control implements ISupportInitialize, IDataGridEditingService

Il controllo System.Windows.Forms.DataGrid consente di visualizzare collegamenti alle tabelle figlio simili a quelli ipertestuali. È possibile fare clic su un collegamento per passare alla tabella figlio. Quando viene aperta una tabella figlio, nel titolo viene visualizzato un pulsante che consente di ritornare alla tabella padre. I dati delle righe padre vengono visualizzati sotto la didascalia e sopra le intestazioni di colonna. È possibile nascondere le informazioni della riga padre facendo clic sul pulsante a destra del pulsante Indietro.

Per visualizzare una tabella nell'oggetto System.Windows.Forms.DataGrid in fase di esecuzione, utilizzare il metodo SetDataBinding per impostare le proprietà DataSource e DataMember su un'origine dati valida. Sono valide le origini dati seguenti:

Per ulteriori informazioni sulla classe DataSet, vedere Utilizzo di DataSet in ADO.NET.

Utilizzando come origine dati un oggetto DataView e impostando la proprietà AllowNew su false è possibile creare una griglia che consente all'utente di modificare i dati, ma non di aggiungere nuove righe.

Le origini dati sono inoltre gestite dagli oggetti BindingManagerBase. Per ogni tabella di un'origine dati, un oggetto BindingManagerBase può essere restituito dall'oggetto BindingContext del form. È ad esempio possibile determinare il numero di righe contenute in un'origine dati restituendo la proprietà Count dell'oggetto BindingManagerBase associato.

Per convalidare i dati, utilizzare gli oggetti sottostanti che rappresentano i dati e i relativi eventi. Se ad esempio i dati provengono da un oggetto DataTable in un controllo DataSet, utilizzare gli eventi ColumnChanging e RowChanging.

NotaNota

Poiché è possibile personalizzare il numero di colonne aggiungendo o eliminando i membri dell'insieme GridColumnStylesCollection e ordinare le righe per colonna, non è garantito che i valori delle proprietà RowNumber e ColumnNumber corrispondano agli indici DataRow e DataColumn in un oggetto DataTable. È quindi opportuno evitare di utilizzare queste proprietà nell'evento Validating per convalidare i dati.

Per determinare la cella selezionata, utilizzare la proprietà CurrentCell. Per modificare il valore di una cella, utilizzare la proprietà Item, che accetta indici di riga e di colonna della cella o un singolo oggetto DataGridCell. Monitorare l'evento CurrentCellChanged da rilevare quando l'utente seleziona un'altra cella.

Per determinare la parte del controllo su cui l'utente ha fatto clic, utilizzare il metodo HitTest nell'evento MouseDown. Il metodo HitTest restituisce un oggetto DataGrid.HitTestInfo, che contiene la riga e la colonna di un'area selezionata mediante clic.

Per gestire l'aspetto del controllo in fase di esecuzione, sono disponibili diverse proprietà per l'impostazione degli attributi relativi al colore e alla didascalia, tra cui CaptionForeColor, CaptionBackColor, CaptionFont e così via.

È possibile modificare ulteriormente l'aspetto delle griglie creando degli oggetti DataGridTableStyle e aggiungendoli all'insieme GridTableStylesCollection, a cui si accede mediante la proprietà TableStyles. Se ad esempio la proprietà DataSource è impostata su un controllo DataSet che contiene tre oggetti DataTable, è possibile aggiungere tre oggetti DataGridTableStyle all'insieme, uno per ogni tabella. Per sincronizzare ogni oggetto DataGridTableStyle con un oggetto DataTable, impostare la proprietà MappingName dell'oggetto DataGridTableStyle sulla proprietà TableName dell'oggetto DataTable. Per ulteriori informazioni sull'associazione a una matrice di oggetti, vedere la proprietà DataGridTableStyle.MappingName.

Per creare una visualizzazione personalizzata di una tabella, creare un'istanza di una classe DataGridTextBoxColumn o DataGridBoolColumn e aggiungere l'oggetto all'insieme GridTableStylesCollection cui si accede mediante la proprietà TableStyles. Entrambe le classi ereditano da DataGridColumnStyle. Per ciascun stile di colonna impostare la proprietà MappingName sulla proprietà ColumnName di una colonna che si intende visualizzare sulla griglia. Per nascondere una colonna, impostarne la proprietà MappingName su un elemento diverso dalla proprietà ColumnName valida.

Per formattare il testo di una colonna, impostare la proprietà Format dell'oggetto DataGridTextBoxColumn su uno dei valori riportati in Stringhe di formato di data e ora o Stringhe di formato numerico standard.

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. Inoltre, è necessario che l'elenco ArrayList contenga elementi al momento in cui viene associato. Se l'elenco ArrayList è vuoto, verrà generata una griglia vuota. Gli oggetti nell'oggetto ArrayList, inoltre, devono contenere proprietà pubbliche. Quando si associa un oggetto ArrayList, impostare la proprietà MappingName dell'oggetto DataGridTableStyle su "ArrayList", ossia il nome del tipo.

Per ciascun oggetto DataGridTableStyle, è possibile impostare attributi relativi al colore e alla didascalia che sottopongano a override le impostazioni del controllo System.Windows.Forms.DataGrid. Tuttavia, se queste proprietà non vengono impostate, per impostazione predefinita vengono utilizzate le impostazioni del controllo. Le seguenti proprietà possono essere sottoposte a override dalle proprietà DataGridTableStyle:

Per personalizzare l'aspetto delle singole colonne, aggiungere gli oggetti DataGridColumnStyle all'insieme GridColumnStylesCollection, a cui si accede mediante la proprietà GridColumnStyles di ciascun oggetto DataGridTableStyle. Per sincronizzare ogni oggetto DataGridColumnStyle con un oggetto DataColumn nell'oggetto DataTable, impostare la proprietà MappingName sulla proprietà ColumnName di un oggetto DataColumn. Quando si crea un oggetto DataGridColumnStyle, è possibile impostare anche una stringa di formattazione che specifichi la modalità di visualizzazione dei dati nella colonna. È possibile, ad esempio, specificare che nella colonna sia utilizzato un formato di data abbreviato per visualizzare le date contenute nella tabella.

Nota di avvisoAttenzione

Creare sempre oggetti DataGridColumnStyle e aggiungerli all'insieme GridColumnStylesCollection prima di aggiungere oggetti DataGridTableStyle all'insieme 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.

NotaNota

Il controllo DataGridView sostituisce il controllo DataGrid aggiungendovi funzionalità; tuttavia il controllo DataGrid viene mantenuto per compatibilità con le versioni precedenti e per l'eventuale uso futuro. Per ulteriori informazioni, vedere Differenze tra i controlli DataGridView e DataGrid di Windows Form.

Nell'esempio di codice riportato di seguito viene creato un Windows Form, un oggetto DataSet che contiene due oggetti DataTable e un oggetto DataRelation che fa riferimento alle due tabelle. Per visualizzare i dati, un controllo System.Windows.Forms.DataGrid viene quindi associato al controllo DataSet mediante il metodo SetDataBinding. Un pulsante del form consente di modificare l'aspetto della griglia creando due oggetti DataGridTableStyle e impostando la proprietà MappingName di ciascun oggetto su una proprietà TableName di uno degli oggetti DataTable. Nell'esempio è inoltre contenuto il codice nell'evento MouseUp che utilizza il metodo HitTest per stampare la colonna, la riga e la porzione della griglia su cui è stato fatto clic.

using System;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Windows.Forms;

public class Form1 : System.Windows.Forms.Form
{
   private System.ComponentModel.Container components;
   private Button button1;
   private Button button2;
   private DataGrid myDataGrid;   
   private DataSet myDataSet;
   private bool TablesAlreadyAdded;
   public Form1()
   {
      // Required for Windows Form Designer support.
      InitializeComponent();
      // Call SetUp to bind the controls.
      SetUp();
   }

   protected override void Dispose( bool disposing ){
      if( disposing ){
         if (components != null){
            components.Dispose();}
      }
      base.Dispose( disposing );
   }
   private void InitializeComponent()
   {
      // Create the form and its controls.
      this.components = new System.ComponentModel.Container();
      this.button1 = new System.Windows.Forms.Button();
      this.button2 = new System.Windows.Forms.Button();
      this.myDataGrid = new DataGrid();
      
      this.Text = "DataGrid Control Sample";
      this.ClientSize = new System.Drawing.Size(450, 330);
      
      button1.Location = new Point(24, 16);
      button1.Size = new System.Drawing.Size(120, 24);
      button1.Text = "Change Appearance";
      button1.Click+=new System.EventHandler(button1_Click);

      button2.Location = new Point(150, 16);
      button2.Size = new System.Drawing.Size(120, 24);
      button2.Text = "Get Binding Manager";
      button2.Click+=new System.EventHandler(button2_Click);

      myDataGrid.Location = new  Point(24, 50);
      myDataGrid.Size = new Size(300, 200);
      myDataGrid.CaptionText = "Microsoft DataGrid Control";
      myDataGrid.MouseUp += new MouseEventHandler(Grid_MouseUp);
      
      this.Controls.Add(button1);
      this.Controls.Add(button2);
      this.Controls.Add(myDataGrid);
   }

   public static void Main()
   {
      Application.Run(new Form1());
   }
   
   private void SetUp()
   {
      // Create a DataSet with two tables and one relation.
      MakeDataSet();
      /* Bind the DataGrid to the DataSet. The dataMember
      specifies that the Customers table should be displayed.*/
      myDataGrid.SetDataBinding(myDataSet, "Customers");
   }

   private void button1_Click(object sender, System.EventArgs e)
   {
      if(TablesAlreadyAdded) return;
      AddCustomDataTableStyle();
   }

   private void AddCustomDataTableStyle()
   {
      DataGridTableStyle ts1 = new DataGridTableStyle();
      ts1.MappingName = "Customers";
      // Set other properties.
      ts1.AlternatingBackColor = Color.LightGray;

      /* 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";

      // Set other properties.
      ts2.AlternatingBackColor = Color.LightBlue;
      
      // Create new ColumnStyle objects
      DataGridColumnStyle cOrderDate = 
      new DataGridTextBoxColumn();
      cOrderDate.MappingName = "OrderDate";
      cOrderDate.HeaderText = "Order Date";
      cOrderDate.Width = 100;
      ts2.GridColumnStyles.Add(cOrderDate);

      /* Use a PropertyDescriptor to create a formatted
      column. First get the PropertyDescriptorCollection
      for the data source and data member. */
      PropertyDescriptorCollection pcol = this.BindingContext
      [myDataSet, "Customers.custToOrders"].GetItemProperties();
 
      /* Create a formatted column using a PropertyDescriptor.
      The formatting character "c" specifies a currency format. */     
      DataGridColumnStyle csOrderAmount = 
      new DataGridTextBoxColumn(pcol["OrderAmount"], "c", true);
      csOrderAmount.MappingName = "OrderAmount";
      csOrderAmount.HeaderText = "Total";
      csOrderAmount.Width = 100;
      ts2.GridColumnStyles.Add(csOrderAmount);

      /* Add the DataGridTableStyle instances to 
      the GridTableStylesCollection. */
      myDataGrid.TableStyles.Add(ts1);
      myDataGrid.TableStyles.Add(ts2);

     // Sets the TablesAlreadyAdded to true so this doesn't happen again.
     TablesAlreadyAdded=true;
   }

   private void button2_Click(object sender, System.EventArgs e)
   {
      BindingManagerBase bmGrid;
      bmGrid = BindingContext[myDataSet, "Customers"];
      MessageBox.Show("Current BindingManager Position: " + bmGrid.Position);
   }

   private void Grid_MouseUp(object sender, MouseEventArgs e)
   {
      // Create a HitTestInfo object using the HitTest method.

      // Get the DataGrid by casting sender.
      DataGrid myGrid = (DataGrid)sender;
      DataGrid.HitTestInfo myHitInfo = myGrid.HitTest(e.X, e.Y);
      Console.WriteLine(myHitInfo);
      Console.WriteLine(myHitInfo.Type);
      Console.WriteLine(myHitInfo.Row);
      Console.WriteLine(myHitInfo.Column);
   }

   // Create a DataSet with two tables and populate it.
   private void MakeDataSet()
   {
      // Create a DataSet.
      myDataSet = new DataSet("myDataSet");
      
      // Create two DataTables.
      DataTable tCust = new DataTable("Customers");
      DataTable tOrders = new DataTable("Orders");

      // Create two columns, and add them to the first table.
      DataColumn cCustID = new DataColumn("CustID", typeof(int));
      DataColumn cCustName = new DataColumn("CustName");
      DataColumn cCurrent = new DataColumn("Current", typeof(bool));
      tCust.Columns.Add(cCustID);
      tCust.Columns.Add(cCustName);
      tCust.Columns.Add(cCurrent);

      // Create three columns, and add them to the second table.
      DataColumn cID = 
      new DataColumn("CustID", typeof(int));
      DataColumn cOrderDate = 
      new DataColumn("orderDate",typeof(DateTime));
      DataColumn cOrderAmount = 
      new DataColumn("OrderAmount", typeof(decimal));
      tOrders.Columns.Add(cOrderAmount);
      tOrders.Columns.Add(cID);
      tOrders.Columns.Add(cOrderDate);

      // Add the tables to the DataSet.
      myDataSet.Tables.Add(tCust);
      myDataSet.Tables.Add(tOrders);

      // Create a DataRelation, and add it to the DataSet.
      DataRelation dr = new DataRelation
      ("custToOrders", cCustID , cID);
      myDataSet.Relations.Add(dr);
   
      /* Populates the tables. For each customer and order, 
      creates two DataRow variables. */
      DataRow newRow1;
      DataRow newRow2;

      // Create three customers in the Customers Table.
      for(int i = 1; i < 4; i++)
      {
         newRow1 = tCust.NewRow();
         newRow1["custID"] = i;
         // Add the row to the Customers table.
         tCust.Rows.Add(newRow1);
      }
      // Give each customer a distinct name.
      tCust.Rows[0]["custName"] = "Customer1";
      tCust.Rows[1]["custName"] = "Customer2";
      tCust.Rows[2]["custName"] = "Customer3";

      // Give the Current column a value.
      tCust.Rows[0]["Current"] = true;
      tCust.Rows[1]["Current"] = true;
      tCust.Rows[2]["Current"] = false;

      // For each customer, create five rows in the Orders table.
      for(int i = 1; i < 4; i++)
      {
         for(int j = 1; j < 6; j++)
         {
            newRow2 = tOrders.NewRow();
            newRow2["CustID"]= i;
            newRow2["orderDate"]= new DateTime(2001, i, j * 2);
            newRow2["OrderAmount"] = i * 10 + j  * .1;
            // Add the row to the Orders table.
            tOrders.Rows.Add(newRow2);
         }
      }
   }
}

import System.*;
import System.ComponentModel.*;
import System.Data.*;
import System.Drawing.*;
import System.Windows.Forms.*;

public class Form1 extends System.Windows.Forms.Form
{
    private System.ComponentModel.Container components;
    private Button button1;
    private Button button2;
    private DataGrid myDataGrid;
    private DataSet myDataSet;
    private boolean tablesAlreadyAdded;

    public Form1()
    {
        // Required for Windows Form Designer support.
        InitializeComponent();
        // Call SetUp to bind the controls.
        SetUp();
    } //Form1


    protected void Dispose(boolean disposing)
    {
        if (disposing) {
            if (components != null) {
                components.Dispose();
            }
        }
        super.Dispose(disposing);
    } //Dispose

    private void InitializeComponent()
    {
        // Create the form and its controls.
        this.components = new System.ComponentModel.Container();
        this.button1 = new System.Windows.Forms.Button();
        this.button2 = new System.Windows.Forms.Button();
        this.myDataGrid = new DataGrid();
        this.set_Text("DataGrid Control Sample");
        this.set_ClientSize(new System.Drawing.Size(450, 330));
        button1.set_Location(new Point(24, 16));
        button1.set_Size(new System.Drawing.Size(120, 24));
        button1.set_Text("Change Appearance");
        button1.add_Click(new System.EventHandler(button1_Click));
        button2.set_Location(new Point(150, 16));
        button2.set_Size(new System.Drawing.Size(120, 24));
        button2.set_Text("Get Binding Manager");
        button2.add_Click(new System.EventHandler(button2_Click));
        myDataGrid.set_Location(new Point(24, 50));
        myDataGrid.set_Size(new Size(300, 200));
        myDataGrid.set_CaptionText("Microsoft DataGrid Control");
        myDataGrid.add_MouseUp(new MouseEventHandler(Grid_MouseUp));
        this.get_Controls().Add(button1);
        this.get_Controls().Add(button2);
        this.get_Controls().Add(myDataGrid);
    } //InitializeComponent

    public static void main(String[] args)
    {
        Application.Run(new Form1());
    } //main

    private void SetUp()
    {
        // Create a DataSet with two tables and one relation.
        MakeDataSet();

        /*    Bind the DataGrid to the DataSet. The dataMember
            specifies that the Customers table should be displayed.
         */
        myDataGrid.SetDataBinding(myDataSet, "Customers");
    } //SetUp

    protected void button1_Click(Object sender, System.EventArgs e)
    {
        if (tablesAlreadyAdded) {
            return ;
        }
        AddCustomDataTableStyle();
    } //button1_Click

    private void AddCustomDataTableStyle()
    {
        DataGridTableStyle ts1 = new DataGridTableStyle();
        ts1.set_MappingName("Customers");

        // Set other properties.
        ts1.set_AlternatingBackColor(Color.get_LightGray());

        /*  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");

        // Set other properties.
        ts2.set_AlternatingBackColor(Color.get_LightBlue());

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

        /*   Use a PropertyDescriptor to create a formatted
             column. First get the PropertyDescriptorCollection
             for the data source and data member. 
         */
        PropertyDescriptorCollection pcol =
            this.get_BindingContext().get_Item(myDataSet, 
                "Customers.custToOrders").GetItemProperties();

        /*  Create a formatted column using a PropertyDescriptor.
            The formatting character "c" specifies a currency format. 
         */
        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 instances to 
            the GridTableStylesCollection. 
         */
        myDataGrid.get_TableStyles().Add(ts1);
        myDataGrid.get_TableStyles().Add(ts2);

        // Sets the tablesAlreadyAdded to true so this doesn't happen again.
        tablesAlreadyAdded = true;
    } //AddCustomDataTableStyle

    protected void button2_Click(Object sender, System.EventArgs e)
    {
        BindingManagerBase bmGrid;
        bmGrid = get_BindingContext().get_Item(myDataSet, "Customers");
        MessageBox.Show(("Current BindingManager Position: "
            + bmGrid.get_Position()));
    } //button2_Click

    private void Grid_MouseUp(Object sender, MouseEventArgs e)
    {
        // Create a HitTestInfo object using the HitTest method.
        // Get the DataGrid by casting sender.
        DataGrid myGrid = ((DataGrid)(sender));
        DataGrid.HitTestInfo myHitInfo = myGrid.HitTest(e.get_X(), e.get_Y());

        Console.WriteLine(myHitInfo);
        Console.WriteLine(myHitInfo.get_Type());
        Console.WriteLine(myHitInfo.get_Row());
        Console.WriteLine(myHitInfo.get_Column());
    } //Grid_MouseUp

    // Create a DataSet with two tables and populate it.
    private void MakeDataSet()
    {
        // Create a DataSet.
        myDataSet = new DataSet("myDataSet");

        // Create two DataTables.
        DataTable tCust = new DataTable("Customers");
        DataTable tOrders = new DataTable("Orders");

        // Create two columns, and add them to the first table.
        DataColumn cCustID = new DataColumn("CustID", int.class.ToType());
        DataColumn cCustName = new DataColumn("CustName");
        DataColumn cCurrent = new DataColumn("Current",boolean.class.ToType());

        tCust.get_Columns().Add(cCustID);
        tCust.get_Columns().Add(cCustName);
        tCust.get_Columns().Add(cCurrent);

        // Create three columns, and add them to the second table.
        DataColumn cID = new DataColumn("CustID", int.class.ToType());
        DataColumn cOrderDate = new DataColumn(    "orderDate", 
            DateTime.class.ToType());
        DataColumn cOrderAmount = new DataColumn("OrderAmount", 
            System.Decimal.class.ToType());
        tOrders.get_Columns().Add(cOrderAmount);
        tOrders.get_Columns().Add(cID);
        tOrders.get_Columns().Add(cOrderDate);

        // Add the tables to the DataSet.
        myDataSet.get_Tables().Add(tCust);
        myDataSet.get_Tables().Add(tOrders);

        // Create a DataRelation, and add it to the DataSet.
        DataRelation dr = new DataRelation("custToOrders", cCustID, cID);
        myDataSet.get_Relations().Add(dr);

        /*  Populates the tables. For each customer and order, 
            creates two DataRow variables. 
         */
        DataRow newRow1;
        DataRow newRow2;

        // Create three customers in the Customers Table.
        for (int i = 1; i < 4; i++) {
            newRow1 = tCust.NewRow();
            newRow1.set_Item("custID", (System.Int32)i);

            // Add the row to the Customers table.
            tCust.get_Rows().Add(newRow1);
        }

        // Give each customer a distinct name.
        tCust.get_Rows().get_Item(0).set_Item("custName", "Customer1");
        tCust.get_Rows().get_Item(1).set_Item("custName", "Customer2");
        tCust.get_Rows().get_Item(2).set_Item("custName", "Customer3");

        // Give the Current column a value.
        tCust.get_Rows().get_Item(0).set_Item("Current", (System.Boolean)true);
        tCust.get_Rows().get_Item(1).set_Item("Current", (System.Boolean)true);
        tCust.get_Rows().get_Item(2).set_Item("Current",(System.Boolean)false);

        // For each customer, create five rows in the Orders table.
        for (int i = 1; i < 4; i++) {
            for (int j = 1; j < 6; j++) {
                newRow2 = tOrders.NewRow();
                newRow2.set_Item("CustID", (System.Int32)i);
                newRow2.set_Item("orderDate", new DateTime(2001, i, j * 2));
                newRow2.set_Item("OrderAmount", 
                    (System.Single)(i * 10 + j * 0.1));

                // Add the row to the Orders table.
                tOrders.get_Rows().Add(newRow2);
            }
        }
    } //MakeDataSet
} //Form1

I membri statici pubblici (Shared in Visual Basic) di questo tipo sono validi per le operazioni multithreading. I membri di istanza non sono garantiti come thread safe.

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

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

.NET Framework

Supportato in: 2.0 1.1 1.0

.NET Compact Framework

Supportato in: 2.0 1.0
Mostra: