Csharp/CSharp Tutorial/ADO.Net/DataView

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

Attach DataViews to two separate DataGrid controls

using System;
using System.Drawing;
using System.Collections;
using System.ruponentModel;
using System.Windows.Forms;
using System.Data;
using System.Data.SqlClient;
public class MainClass : System.Windows.Forms.Form
{
  private System.Windows.Forms.DataGrid dataGrid1;
  private System.Windows.Forms.DataGrid dataGrid2;
  public MainClass()
  {
    InitializeComponent();
        string ConnectionString ="Integrated Security=SSPI;Initial Catalog=Northwind;Data Source=localhost;";
        SqlConnection conn = new SqlConnection(ConnectionString);
        conn.Open();
        DataSet ds = new DataSet("Orders");
        SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM Orders", conn);
        adapter.Fill(ds, "Orders");
        DataView dataView1 = new DataView(ds.Tables["Orders"]);
        dataView1.Sort = "ShippedDate ASC";
        DataView dataView2 = new DataView(ds.Tables["Orders"]);
        dataView2.Sort = "EmployeeID ASC";
        dataGrid1.DataSource = dataView1;
        dataGrid2.DataSource = dataView2;    
  }
  private void InitializeComponent()
  {
    this.dataGrid1 = new System.Windows.Forms.DataGrid();
    this.dataGrid2 = new System.Windows.Forms.DataGrid();
    ((System.ruponentModel.ISupportInitialize)(this.dataGrid1)).BeginInit();
    ((System.ruponentModel.ISupportInitialize)(this.dataGrid2)).BeginInit();
    this.SuspendLayout();
    // 
    // dataGrid1
    // 
    this.dataGrid1.DataMember = "";
    this.dataGrid1.HeaderForeColor = System.Drawing.SystemColors.ControlText;
    this.dataGrid1.Location = new System.Drawing.Point(8, 8);
    this.dataGrid1.Size = new System.Drawing.Size(272, 248);
    // 
    // dataGrid2
    // 
    this.dataGrid2.DataMember = "";
    this.dataGrid2.HeaderForeColor = System.Drawing.SystemColors.ControlText;
    this.dataGrid2.Location = new System.Drawing.Point(288, 8);
    this.dataGrid2.Size = new System.Drawing.Size(312, 256);
    // 
    // MainClass
    // 
    this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
    this.ClientSize = new System.Drawing.Size(600, 273);
    this.Controls.AddRange(new System.Windows.Forms.Control[] {
                                    this.dataGrid2,
                                    this.dataGrid1});
    ((System.ruponentModel.ISupportInitialize)(this.dataGrid1)).EndInit();
    ((System.ruponentModel.ISupportInitialize)(this.dataGrid2)).EndInit();
    this.ResumeLayout(false);
  }
  [STAThread]
  static void Main() 
  {
    Application.Run(new MainClass());
  }
}

Create DataViews from DataTable

using System;
using System.Data;
using System.Data.SqlClient;
class MainClass 
{
   static void Main(string[] args)
   {
      string connString = @"server = .\sqlexpress;integrated security = true;database = northwind";
      string sql = @"select contactname, country from customers";
      SqlConnection conn = new SqlConnection(connString);
      try
      {
         SqlDataAdapter da = new SqlDataAdapter();
         da.SelectCommand = new SqlCommand(sql, conn);
         DataSet ds = new DataSet();
         da.Fill(ds, "customers");
         DataTable dt = ds.Tables["customers"];
         DataView dv = new DataView(dt,"country = "Germany"","country",DataViewRowState.CurrentRows); 
         foreach (DataRowView drv in dv)
         {
            for (int i = 0; i < dv.Table.Columns.Count; i++)
               Console.WriteLine(drv[i]);
         }
      }
      catch(Exception e)
      {
         Console.WriteLine("Error: " + e);
      }
      finally
      {
         conn.Close();
      }
   }
}

DataView Sorter and Filter

using System;        
using System.Drawing;
using System.Collections;
using System.ruponentModel;
using System.Windows.Forms;
using System.Data;
using System.Data.OleDb;
using System.Data.SqlClient;
public class DataViewManagerDemo : System.Windows.Forms.Form
{
  private System.Windows.Forms.DataGrid dataGrid1;
  public DataViewManagerDemo()
  {
    InitializeComponent();
  }
  private void InitializeComponent()
  {
    this.dataGrid1 = new System.Windows.Forms.DataGrid();
    ((System.ruponentModel.ISupportInitialize)(this.dataGrid1)).BeginInit();
    this.SuspendLayout();
    // 
    this.dataGrid1.DataMember = "";
    this.dataGrid1.HeaderForeColor = System.Drawing.SystemColors.ControlText;
    this.dataGrid1.Location = new System.Drawing.Point(8, 8);
    this.dataGrid1.Size = new System.Drawing.Size(448, 328);
    // 
    this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
    this.ClientSize = new System.Drawing.Size(480, 341);
    this.Controls.AddRange(new System.Windows.Forms.Control[] {
                                    this.dataGrid1});
    this.Load += new System.EventHandler(this.DataViewManagerDemo_Load);
    ((System.ruponentModel.ISupportInitialize)(this.dataGrid1)).EndInit();
    this.ResumeLayout(false);
  }
  [STAThread]
  static void Main() 
  {
    Application.Run(new DataViewManagerDemo());
  }
  private void DataViewManagerDemo_Load(object sender, System.EventArgs e)
    {
        string ConnectionString ="Integrated Security=SSPI;Initial Catalog=Northwind;Data Source=localhost;";
        SqlConnection conn = new SqlConnection(ConnectionString);
        conn.Open();
        DataSet ds = new DataSet("Orders");
        SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM Orders", conn);
        adapter.Fill(ds, "Orders");
        DataViewManager dvm = new DataViewManager(ds);
        dvm.DataViewSettings["Orders"].RowFilter = "EmployeeID = 4";
        dvm.DataViewSettings["Orders"].Sort = "ShippedDate ASC";
        DataView dataView1 = dvm.CreateDataView(ds.Tables["Orders"]);
        dataGrid1.DataSource = dataView1;
    }
}

Loop through DataRowView in DataView

using System;
using System.Data;
using System.Data.SqlClient;
class MainClass 
{
   static void Main(string[] args)
   {
      string connString = @"server = .\sqlexpress;integrated security = true;database = northwind";
      string sql = @"select contactname, country from customers";
      SqlConnection conn = new SqlConnection(connString);
      try
      {
         SqlDataAdapter da = new SqlDataAdapter();
         da.SelectCommand = new SqlCommand(sql, conn);
         DataSet ds = new DataSet();
         da.Fill(ds, "customers");
         DataTable dt = ds.Tables["customers"];
         DataView dv = new DataView(dt,"country = "Germany"","country",DataViewRowState.CurrentRows); 
         foreach (DataRowView drv in dv)
         {
            for (int i = 0; i < dv.Table.Columns.Count; i++)
               Console.WriteLine(drv[i]);
         }
      }
      catch(Exception e)
      {
         Console.WriteLine("Error: " + e);
      }
      finally
      {
         conn.Close();
      }
   }
}

Multiple Data View

using System.Data.SqlClient;
using System.Data;
using System;
using System.Drawing;
using System.Collections;
using System.ruponentModel;
using System.Windows.Forms;
  public class MultipleView : System.Windows.Forms.Form
  {
    private System.Windows.Forms.DataGrid gridArgentina;
    private System.Windows.Forms.DataGrid gridBrazil;
    private System.Windows.Forms.Label label1;
    private System.Windows.Forms.Label label2;
    private System.Windows.Forms.Label label3;
    private System.Windows.Forms.DataGrid gridAll;
    public MultipleView()
    {
      this.gridArgentina = new System.Windows.Forms.DataGrid();
      this.gridBrazil = new System.Windows.Forms.DataGrid();
      this.label1 = new System.Windows.Forms.Label();
      this.label2 = new System.Windows.Forms.Label();
      this.label3 = new System.Windows.Forms.Label();
      this.gridAll = new System.Windows.Forms.DataGrid();
      ((System.ruponentModel.ISupportInitialize)(this.gridArgentina)).BeginInit();
      ((System.ruponentModel.ISupportInitialize)(this.gridBrazil)).BeginInit();
      ((System.ruponentModel.ISupportInitialize)(this.gridAll)).BeginInit();
      this.SuspendLayout();
      // 
      // gridArgentina
      // 
      this.gridArgentina.DataMember = "";
      this.gridArgentina.Location = new System.Drawing.Point(12, 32);
      this.gridArgentina.Size = new System.Drawing.Size(416, 88);
      this.gridArgentina.TabIndex = 0;
      // 
      // gridBrazil
      // 
      this.gridBrazil.DataMember = "";
      this.gridBrazil.Location = new System.Drawing.Point(12, 156);
      this.gridBrazil.Size = new System.Drawing.Size(416, 96);
      this.gridBrazil.TabIndex = 1;
      // 
      // label1
      // 
      this.label1.Location = new System.Drawing.Point(12, 12);
      this.label1.Size = new System.Drawing.Size(156, 16);
      this.label1.Text = "Customers From Argentina:";
      // 
      // label2
      // 
      this.label2.Location = new System.Drawing.Point(12, 136);
      this.label2.Size = new System.Drawing.Size(156, 16);
      this.label2.Text = "Customers From Brazil:";
      // 
      // label3
      // 
      this.label3.Location = new System.Drawing.Point(12, 268);
      this.label3.Size = new System.Drawing.Size(156, 16);
      this.label3.Text = "All Customers:";
      // 
      // gridAll
      // 
      this.gridAll.DataMember = "";
      this.gridAll.Location = new System.Drawing.Point(12, 288);
      this.gridAll.Size = new System.Drawing.Size(416, 96);
      // 
      // MultipleView
      // 
      this.AutoScaleBaseSize = new System.Drawing.Size(5, 14);
      this.ClientSize = new System.Drawing.Size(440, 398);
      this.Controls.AddRange(new System.Windows.Forms.Control[] {
                                      this.gridAll,
                                      this.label3,
                                      this.label2,
                                      this.label1,
                                      this.gridBrazil,
                                      this.gridArgentina});
      this.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
      this.Text = "Multiple Views";
      this.Load += new System.EventHandler(this.MultipleView_Load);
      ((System.ruponentModel.ISupportInitialize)(this.gridArgentina)).EndInit();
      ((System.ruponentModel.ISupportInitialize)(this.gridBrazil)).EndInit();
      ((System.ruponentModel.ISupportInitialize)(this.gridAll)).EndInit();
      this.ResumeLayout(false);
    }
    private void MultipleView_Load(object sender, System.EventArgs e)
    {
      string connectionString = "Data Source=localhost;Initial Catalog=Northwind;Integrated Security=SSPI";
      string SQL = "SELECT * FROM Customers";
      SqlConnection con = new SqlConnection(connectionString);
      SqlCommand com = new SqlCommand(SQL, con);
      SqlDataAdapter adapter = new SqlDataAdapter(com);
      DataSet ds = new DataSet("Northwind");      
      con.Open();
      adapter.Fill(ds, "Customers");
      con.Close();
      DataView viewArgentina = new DataView(ds.Tables["Customers"]);
      DataView viewBrazil = new DataView(ds.Tables["Customers"]);
      viewArgentina.RowFilter = "Country = "Argentina"";
      viewBrazil.RowFilter = "Country = "Brazil"";
      gridArgentina.DataSource = viewArgentina;
      gridBrazil.DataSource = viewBrazil;
      gridAll.DataSource = ds.Tables["Customers"].DefaultView;    
    }
    [STAThread]
    static void Main() 
    {
      Application.Run(new MultipleView());
    }
  }