using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Configuration;
using System.Data.SqlClient;
// CustomDataGridView
public class Form1 : Form {
public Form1() {
InitializeComponent();
}
private void getData_Click(object sender, EventArgs e) {
getData.Enabled = false;
using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["northwind"].ConnectionString)) {
string select = "SELECT EmployeeID, FirstName, LastName, Photo, IsNull(ReportsTo,0) as ReportsTo FROM Employees";
SqlDataAdapter da = new SqlDataAdapter(select, con);
DataSet ds = new DataSet();
da.Fill(ds, "Employees");
select = "SELECT EmployeeID, FirstName + ' ' + LastName as Name FROM Employees union select 0,'(None)'";
da = new SqlDataAdapter(select, con);
da.Fill(ds, "Managers");
SetupColumns(ds);
dataGridView1.AutoGenerateColumns = false;
dataGridView1.DataSource = ds.Tables["Employees"];
dataGridView1.AutoResizeRows(DataGridViewAutoSizeRowsMode.AllCells);
}
}
private void SetupColumns(DataSet ds) {
DataGridViewTextBoxColumn forenameColumn = new DataGridViewTextBoxColumn();
forenameColumn.DataPropertyName = "FirstName";
forenameColumn.HeaderText = "Forename";
forenameColumn.ValueType = typeof(string);
forenameColumn.Frozen = true;
dataGridView1.Columns.Add(forenameColumn);
DataGridViewTextBoxColumn surnameColumn = new DataGridViewTextBoxColumn();
surnameColumn.DataPropertyName = "LastName";
surnameColumn.HeaderText = "Surname";
surnameColumn.Frozen = true;
surnameColumn.ValueType = typeof(string);
dataGridView1.Columns.Add(surnameColumn);
DataGridViewImageColumn photoColumn = new DataGridViewImageColumn();
photoColumn.DataPropertyName = "Photo";
photoColumn.Width = 200;
photoColumn.HeaderText = "Image";
photoColumn.ReadOnly = true;
photoColumn.ImageLayout = DataGridViewImageCellLayout.Normal;
dataGridView1.Columns.Add(photoColumn);
DataGridViewComboBoxColumn reportsToColumn = new DataGridViewComboBoxColumn();
reportsToColumn.HeaderText = "Reports To";
reportsToColumn.DataSource = ds.Tables["Managers"];
reportsToColumn.DisplayMember = "Name";
reportsToColumn.ValueMember = "EmployeeID";
reportsToColumn.DataPropertyName = "ReportsTo";
dataGridView1.Columns.Add(reportsToColumn);
}
private void InitializeComponent() {
this.dataGridView1 = new System.Windows.Forms.DataGridView();
this.getData = new System.Windows.Forms.Button();
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit();
this.SuspendLayout();
//
// dataGridView1
//
this.dataGridView1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dataGridView1.Location = new System.Drawing.Point(13, 13);
this.dataGridView1.Name = "dataGridView1";
this.dataGridView1.Size = new System.Drawing.Size(507, 372);
this.dataGridView1.TabIndex = 0;
//
// getData
//
this.getData.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.getData.Location = new System.Drawing.Point(445, 391);
this.getData.Name = "getData";
this.getData.Size = new System.Drawing.Size(75, 23);
this.getData.TabIndex = 1;
this.getData.Text = "Get Data";
this.getData.UseVisualStyleBackColor = true;
this.getData.Click += new System.EventHandler(this.getData_Click);
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(532, 426);
this.Controls.Add(this.getData);
this.Controls.Add(this.dataGridView1);
this.Name = "Form1";
this.Text = "CustomDataGridView";
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit();
this.ResumeLayout(false);
}
private System.Windows.Forms.DataGridView dataGridView1;
private System.Windows.Forms.Button getData;
[STAThread]
static void Main() {
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
|