■フォームにパネルとボタンを貼り付けて以下のように変更してください
DataGridの内容をデータベースから取得して表示しています
public class Form1 : System.Windows.Forms.Form
{
//ここにいろいろあって、
CustomDataGrid DataGrid1= new CustomDataGrid();
DataSet dataSet1 = new DataSet("dataSet1");
DataTable dataTable1;
//DB関連
private string connectionString = "Provider=SQLOLEDB.1;Data Source=IPアドレス,ポート番号;Persist Security Info=True;User ID=ユーザーID;Password=パスワード;Initial Catalog=DB名;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Use Encryption for Data=False;Tag with column collation when possible=False";
private System.Data.OleDb.OleDbConnection oConn = new System.Data.OleDb.OleDbConnection();
private System.Data.OleDb.OleDbDataAdapter dataAdapter1 = new System.Data.OleDb.OleDbDataAdapter();
private System.Data.OleDb.OleDbCommand command1 = new System.Data.OleDb.OleDbCommand();
//DataGridの作成と初期化、一度しか読み出せません
private void GridInit()
{
DataGrid1.Font = this.Font;
//ヘッダーに線を引く
//DataGrid1.headerLine = true;
//タブキーを押されたときに移動するコントロールの指定
DataGrid1.NextControl = button1;
panel1.BorderStyle = BorderStyle.FixedSingle;
panel1.Controls.Add(DataGrid1);
//Panelの中央に貼り付けます
DataGrid1.Dock = DockStyle.Fill;
//ボーダースタイルの変更
DataGrid1.BorderStyle = BorderStyle.None;
//行のヘッダーを消す
// DataGrid1.ColumnHeadersVisible = false;
//新しい行の追加、編集、削除を禁止する
DataGrid1.ReadOnly = true;
//Captionの表示を消します
DataGrid1.CaptionVisible = false;
// テーブルのスタイルを作成
DataGridTableStyle dgTableStyle = new DataGridTableStyle();
dgTableStyle.MappingName = dataTable1.TableName;
// *** 列ヘッダーによるソートを禁止 ***
dgTableStyle.AllowSorting = false;
//列のヘッダを消す
dgTableStyle.RowHeadersVisible = false;
//ラインカラーの変更
dgTableStyle.GridLineColor = Color.Black;
DataGrid1.TableStyles.Add(dgTableStyle);
//1行おきに色をつける
dgTableStyle.AlternatingBackColor = Color.FromArgb(220, 255, 255);
DataColumn dataClumn1= dataTable1.Columns.Add();
DataColumn dataClumn2 = dataTable1.Columns.Add();
DataColumn dataClumn3 = dataTable1.Columns.Add();
DataColumn dataClumn4 = dataTable1.Columns.Add();
// テーブルの列のスタイルを作成
ColorDataGridTextBoxColumn dgColumnStyle1 =new ColorDataGridTextBoxColumn();
DataGridTextBoxColumn dgColumnStyle2 = new DataGridTextBoxColumn();
DataGridTextBoxColumn dgColumnStyle3 =new DataGridTextBoxColumn();
DataGridTextBoxColumn dgColumnStyle4 = new DataGridTextBoxColumn();
//DBのフィールド名を設定する
dgColumnStyle1.MappingName = "Field1"; //dataClumn1.ColumnName
dgColumnStyle2.MappingName = "Field2"; //dataClumn2.ColumnName
dgColumnStyle3.MappingName = "Field3"; //dataClumn3.ColumnName
dgColumnStyle4.MappingName = dataClumn4.ColumnName;
//列の幅を決定
dgColumnStyle1.Width = 100;
dgColumnStyle2.Width = 50;
dgColumnStyle3.Width = 50;
dgColumnStyle4.Width = 50;
//列の右ぞろえ、中央ぞろえ、左ぞろえを設定
dgColumnStyle1.Alignment = HorizontalAlignment.Center;
dgColumnStyle2.Alignment = HorizontalAlignment.Left;
dgColumnStyle3.Alignment = HorizontalAlignment.Right;
dgColumnStyle4.Alignment = HorizontalAlignment.Right;
//ヘッダーのテキストを設定
dgColumnStyle1.HeaderText = " いなば"; //2002ではバグがあり、Centerをスペースでごまかしています。
dgColumnStyle2.HeaderText = "てすと";
dgColumnStyle3.HeaderText = "こんにちは";
dgColumnStyle4.HeaderText = "世界";
//列のスタイルをテーブル・スタイルに登録
dgTableStyle.GridColumnStyles.Add(dgColumnStyle1);
dgTableStyle.GridColumnStyles.Add(dgColumnStyle2);
dgTableStyle.GridColumnStyles.Add(dgColumnStyle3);
dgTableStyle.GridColumnStyles.Add(dgColumnStyle4);
}
//何度でも読み出して表の値を書き換えられます。
private void GridShow()
{
//重い処理の可能性があるためカーソルを砂時計に換える
Cursor BkCur = Cursor.Current; //現在のカーソルを取っておく
Cursor.Current = Cursors.WaitCursor; //砂時計カーソルに入れ替える
//選択行を取得
int line = DataGrid1.GetTopRow();
//先頭行を設定 存在しない行を指定するとエラーになる
DataGrid1.SetTopRow(0);
//データグリッドの更新前に列ヘッダーによるソートを保存する
bool sortpos = DataGrid1.TableStyles[dataTable1.TableName].AllowSorting;
DataGrid1.TableStyles[dataTable1.TableName].AllowSorting = false;
//テーブルの要素を消去
dataTable1.Rows.Clear();
command1.Connection = oConn;
command1.CommandText = "SELECT TOP 1000 * FROM TABLE1";
//SQL文を実行し、データを取得する
dataAdapter1.SelectCommand = command1;
dataAdapter1.Fill(dataSet1, dataTable1.TableName);
//データグリッドにテーブルを表示する
DataGrid1.SetDataBinding(dataSet1, dataTable1.TableName);
//列ヘッダーによるソートを復元する
DataGrid1.TableStyles[dataTable1.TableName].AllowSorting = sortpos;
//選択行を設定 行数が変更される場合は存在しない行を指定するとエラーになる
DataGrid1.SetTopRow(line);
Cursor.Current = BkCur; //取っておいたカーソルに戻す
}
//指定行を選択します
//A specification line is chosen.
private void lineSelected(int LineNo)
{
DataGrid1.CurrentCell = new DataGridCell(LineNo, 0);
for(int i = 0;dataTable1.Rows.Count >i;i++)
{
DataGrid1.UnSelect(i);
}
DataGrid1.Select(LineNo);
//DataGrid1.SetTopRow(LineNo)
DataGrid1.Refresh();
}
//一行単位の選択に変更
//It changes into selection of a party unit.
private void DataGrid1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{
if(!(dataTable1.Rows.Count <= 0))
{
DataGridCell Cell;
Cell = DataGrid1.CurrentCell;
// .RowNumber The selected sequence
// .ColumnNumber The selected sequence
DataGrid1.Select(Cell.RowNumber); //A line is chosen.
}
}
private void Form1_Load(object sender, System.EventArgs e)
{
oConn.ConnectionString = connectionString;
DataGrid1.Paint += new System.Windows.Forms.PaintEventHandler(this.DataGrid1_Paint);
dataTable1 = dataSet1.Tables.Add("Table1");
GridInit();
GridShow();
}
}
▲トップページ