Miscellany.cs
上传用户:lxycoco
上传日期:2022-07-21
资源大小:38457k
文件大小:4k
源码类别:

C#编程

开发平台:

Others

  1. using System;
  2. using System.Windows.Forms;
  3. using System.Data;
  4. using System.Data.SqlClient;
  5. using System.Reflection;
  6. /// <summary>
  7. /// This class provides an example of creating and using a data grid.
  8. /// </summary>
  9. public class Miscellany : System.Windows.Forms.Form
  10. {
  11.   private Button    retrieveButton ;
  12.   private DataGrid  dataGrid ;
  13.   /// <summary>
  14.   /// Construct the window.
  15.   /// </summary>
  16.   /// <remarks>
  17.   /// This method constructs the window by creating both the data grid and the button.
  18.   /// </remarks>
  19.   public Miscellany ( )
  20.   {
  21.     this.AutoScaleBaseSize = new System.Drawing.Size (5, 13);
  22.     this.ClientSize = new System.Drawing.Size (464, 253);
  23.     this.Text = "11_Miscellany" ;
  24.     this.dataGrid = new DataGrid ();
  25.     dataGrid.BeginInit ();
  26.     dataGrid.Location = new System.Drawing.Point (8, 8);
  27.     dataGrid.Size = new System.Drawing.Size (448, 208);
  28.     dataGrid.TabIndex = 0;
  29.     dataGrid.Anchor = AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top | AnchorStyles.Bottom ;
  30.     dataGrid.MouseUp += new MouseEventHandler (this.dataGrid_MouseUp);
  31.     this.Controls.Add (this.dataGrid);
  32.     dataGrid.EndInit ();
  33.     this.retrieveButton = new Button ();
  34.     retrieveButton.Location = new System.Drawing.Point (384, 224);
  35.     retrieveButton.Size = new System.Drawing.Size (75, 23);
  36.     retrieveButton.TabIndex = 1;
  37.     retrieveButton.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
  38.     retrieveButton.Text = "Retrieve";
  39.     retrieveButton.Click += new System.EventHandler (this.retrieveButton_Click);
  40.     this.Controls.Add (this.retrieveButton);
  41.   }
  42.   protected void dataGrid_MouseUp (object sender, MouseEventArgs e)
  43.   {
  44.     // Perform a hit test
  45.     if ( e.Button == MouseButtons.Right )
  46.     {
  47.       // Find which row the user clicked on, if any
  48.       DataGrid.HitTestInfo  hti = dataGrid.HitTest ( e.X , e.Y ) ;
  49.       // Check if the user hit a cell
  50.       if ( hti.Type == DataGrid.HitTestType.Cell )
  51.       {
  52.         // Find the DataRow that corresponds to the cell the user has clicked upon
  53.         try
  54.         {
  55.           BindingManagerBase  bmb = this.BindingContext[dataGrid.DataSource, dataGrid.DataMember] ;
  56.           bmb.Position = hti.Row ;
  57.           DataRowView   drv = bmb.Current as DataRowView ;
  58.           if ( drv != null )
  59.           {
  60.             ContextDataRow  ctx = drv.Row as ContextDataRow ;
  61.             if ( ctx != null )
  62.               ctx.PopupMenu ( dataGrid , e.X, e.Y ) ;
  63.           }
  64.         }
  65.         catch ( Exception ex )
  66.         {
  67.           MessageBox.Show ( ex.ToString ( ) );
  68.         }
  69.       }
  70.     }
  71.   }
  72.   /// <summary>
  73.   /// Retrieve the data
  74.   /// </summary>
  75.   /// <param name="sender"> </param>
  76.   /// <param name="e"> </param>
  77.   protected void retrieveButton_Click (object sender, System.EventArgs e)
  78.   {
  79.     DataSet ds = this.ConstructDataSet ( ) ;
  80.     dataGrid.SetDataBinding ( ds , "Customers" ) ;
  81.   }
  82.   public DataSet ConstructDataSet ( )
  83.   {
  84.     SqlConnection   con = new SqlConnection ( Login.Connection ) ;
  85.     SqlDataAdapter  cmd = new SqlDataAdapter ( "SELECT OrderID, CustomerID, EmployeeID, NULL as ShippedDate from Orders" , con ) ;
  86.     DataSet ds = new DataSet ( ) ;
  87.     ds.Tables.Add ( new OrderTable ( ) ) ;
  88.     cmd.Fill ( ds , "Orders" ) ;
  89.     cmd = new SqlDataAdapter ( "SELECT CustomerID, CompanyName, ContactName from Customers" , con ) ;
  90.     ds.Tables.Add ( new CustomerTable ( ) ) ;
  91.     cmd.Fill ( ds , "Customers" ) ;
  92.     // Create a relationship between tables
  93.     ds.Relations.Add ( "CustomerOrders" ,
  94.       ds.Tables["Customers"].Columns["CustomerID"] ,
  95.       ds.Tables["Orders"].Columns["CustomerID"] ) ;
  96.     return ds ;
  97.   }
  98.   /// <summary>
  99.   /// Display the application window
  100.   /// </summary>
  101.   /// <param name="args">Command line arguments</param>
  102.   public static void Main(string[] args) 
  103.   {
  104.     Application.Run(new Miscellany());
  105.   }
  106. }