首頁 > 軟體

C#資料表格(DataGridView)控制元件的應用案例

2021-03-09 13:00:02

我們通過一個完整的範例來實現課程資訊管理功能的操作,包括查詢、修改、刪除課程資訊的操作。

為了簡化範例,新增課程資訊的操作直接在 SQL Server 資料庫中完成。

下面分幾個步驟完成。

1) 建立課程資訊表建立課程資訊表的 SQL 語句如下。

use test;
create table course
(
  id int primary key identity(1,1),
  name varchar(20),
  credit numeric(3,1),
  remark varchar(50)
);

向表中新增資料的語句如下。

insert into course (name, credit, remark) values ('計算機基石 ' , 2, '無');
insert into course (name, credit, remark) values ('C# 程式開發', 2.5 , '機房授課');
insert into course (name, credit, remark) values ('資料庫原理',1,'無');
insert into course (name, credit, remark) values ('體育',1,'無');
insert into course (name, credit, remark) values ('職業素養培訓',0.5,'無');

在 SQL Server 中執行上述 SQL 語句即可完成課程資訊表(course)的建立和資料的新增。

2) 課程資訊管理介面的設計在課程資訊管理介面中提供了 DataGridView 控制元件用於顯示課程資訊,並提供了根據課程名稱查詢課程資訊、修改以及刪除的功能。

具體的介面設計如下圖所示。

3) 在載入表單時顯示所有課程資訊本例中使用編寫程式碼的方式實現 DataGridView 控制元件的資料繫結,並在表單的載入事件中加入資料繫結的程式碼。

由於查詢所有課程資訊的程式碼將在後面的修改和刪除功能中重複使用,所以單獨定義一個方法來實現查詢所有課程資訊。程式碼如下。

//表單載入事件
private void DataGridViewForm_Load(object sender, EventArgs e)
{
  //呼叫查詢全部課程的方法
  QueryAllCourse();
  
}
//查詢全部課程
private void QueryAllCourse()
{
  //資料庫連線串
  string connStr = "Data Source=.;Initial Catalog=test;User ID=sa;Password=root";
  //建立SqlConnection的範例
  SqlConnection conn = null;
  try
  {
    conn = new SqlConnection(connStr);
    //開啟資料庫
    conn.Open();
    string sql = "select * from course";
    //建立SqlDataAdapter類的物件
    SqlDataAdapter sda = new SqlDataAdapter(sql, conn);
    //建立DataSet類的物件
    DataSet ds = new DataSet();
    //使用SqlDataAdapter物件sda將查新結果填充到DataSet物件ds中
    sda.Fill(ds);
    //設定表格控制元件的DataSource屬性
    dataGridView1.DataSource = ds.Tables[0];
    //設定資料表格上顯示的列標題
    dataGridView1.Columns[0].HeaderText = "編號";
    dataGridView1.Columns[1].HeaderText = "課程名稱";
    dataGridView1.Columns[2].HeaderText = "學分";
    dataGridView1.Columns[3].HeaderText = "備註";
    //設定資料表格為唯讀
    dataGridView1.ReadOnly = true;
    //不允許新增行
    dataGridView1.AllowUserToAddRows = false;
    //背景為白色
    dataGridView1.BackgroundColor = Color.White;
    //只允許選中單行
    dataGridView1.MultiSelect = false;
    //整行選中
    dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
  }
  catch (Exception ex)
  {
    MessageBox.Show("查詢錯誤!" + ex.Message);
  }
  finally
  {
    if (conn != null)
    {
      //關閉資料庫連線
      conn.Close();
    }
  }
}

執行該表單,效果如下圖所示。

4) 完成課程名稱的模糊查詢在「查詢」按鈕的單擊事件中加入根據課程名稱模糊查詢的程式碼,具體如下。

//查詢按鈕單擊事件
private void button1_Click(object sender, EventArgs e)
{
  if (textBox1.Text != "")
  {
    //資料庫連線串
    string connStr = "Data Source=.;Initial Catalog=test;User ID=sa;Password=root";
    //建立SqlConnection的範例
    SqlConnection conn = null;
    try
    {
      conn = new SqlConnection(connStr);
      //開啟資料庫
      conn.Open();
      string sql = "select * from course where name like '%{0}%'";
      //填充預留位置
      sql = string.Format(sql, textBox1.Text);
      //建立SqlDataAdapter類的物件
      SqlDataAdapter sda = new SqlDataAdapter(sql, conn);
      //建立DataSet類的物件
      DataSet ds = new DataSet();
      //使用SqlDataAdapter物件sda將查新結果填充到DataSet物件ds中
      sda.Fill(ds);
      //設定表格控制元件的DataSource屬性
      dataGridView1.DataSource = ds.Tables[0];
    }
    catch (Exception ex)
    {
      MessageBox.Show("出現錯誤!" + ex.Message);
    }
    finally
    {
      if (conn != null)
      {
        //關閉資料庫連線
        conn.Close();
      }
    }
  }
}

執行該表單,查詢效果如下圖所示。


從上面的執行效果可以看出,在文字方塊中輸入「計算機」,則可以實現查詢所有課程 名稱中含有「計算機」字樣的課程資訊。

5) 實現修改功能在 DataGridView 控制元件中選中一條課程資訊,單擊「修改」按鈕,彈出修改課程資訊介面並在該介面中顯示要修改的資訊,修改介面的設計如下圖所示。


選中 DataGridView 控制元件的一條課程資訊,單擊「修改」按鈕。

「修改」按鈕的單擊事件中的程式碼如下。
//修改課程資訊
private void button2_Click(object sender, EventArgs e)
{
  //獲取DataGridView控制元件中的值
  //獲取課程編號
  string id = dataGridView1.SelectedRows[0].Cells[0].Value.ToString();
  //獲取課程名稱
  string name = dataGridView1.SelectedRows[0].Cells[1].Value.ToString();
  //獲取課程名稱
  string credit = dataGridView1.SelectedRows[0].Cells[2].Value.ToString();
  //獲取課程名稱
  string remark = dataGridView1.SelectedRows[0].Cells[3].Value.ToString();
  //建立updateForm類的物件,並將課程資訊傳遞給修改介面
  updateForm updateform = new updateForm(id, name, credit, remark);
  //彈出修改資訊視窗
  DialogResult dr = updateForm.ShowDialog();
  //判斷是否單擊確定按鈕
  if (dr == DialogResult.OK)
  {
    //呼叫查詢全部課程方法
    QueryAllCourse();
  }
}

修改介面 (UpdateForm) 中的程式碼如下。

//帶引數的構造方法
public updateForm(string id,string name,string credit,string remark)
{
  InitializeComponent();
  textBox1.Text = id;
  textBox2.Text = name;
  textBox3.Text = credit;
  textBox4.Text = remark;
}
//確認按鈕單擊事件
private void button1_Click(object sender, EventArgs e)
{
  //資料庫連線串
  string connStr = "Data Source=.;Initial Catalog=test;User ID=sa;Password=root";
  //建立SqlConnection的範例
  SqlConnection conn = null;
  try
  {
    conn = new SqlConnection(connStr);
    //開啟資料庫
    conn.Open();
    string sql = "update course set name='{0}',credit='{1}',remark='{2}' where id='{3}'";
    //填充預留位置
    sql = string.Format(sql, textBox2.Text, textBox3.Text, textBox4.Text, textBox1.Text);
    //建立SqlCommand類的物件
    SqlCommand cmd = new SqlCommand(sql, conn);
    //執行修改操作的SQL
    cmd.ExecuteNonQuery();
    //彈出成功提示
    MessageBox.Show("修改成功!");
    //設定當前表單DislogResult結果為OK
    this.DialogResult = DialogResult.OK;
    //關閉表單
    this.Close();
  }
  catch (Exception ex)
  {
    MessageBox.Show("修改失敗!" + ex.Message);
  }
  finally
  {
    if (conn != null)
    {
      //關閉資料庫連線
      conn.Close();
    }
  }
}
//取消按鈕單擊事件
private void button2_Click(object sender, EventArgs e)
{
  //關閉表單
  this.Close();
}

修改操作的執行效果如下圖所示。

6) 實現刪除功能為「刪除」按鈕新增單擊事件,將選中的課程資訊刪除並重新整理介面中查詢出來的資料。實現的程式碼如下。

//刪除按鈕的單擊事件
private void button3_Click(object sender, EventArgs e)
{
  //獲取DataGridView控制元件中選中行的編號列的值
  int id = int.Parse(dataGridView1.SelectedRows[0].Cells[0].Value.ToString());
  //資料庫連線串
  string connStr = "Data Source=.;Initial Catalog=test;User ID=sa;Password=root";
  //建立SqlConnection的範例
  SqlConnection conn = null;
  try
  {
    conn = new SqlConnection(connStr);
    //開啟資料庫
    conn.Open();
    string sql = "delect from course where id='{0}'";
    //填充預留位置
    sql = string.Format(sql, id);
    //建立SqlCommand類的物件
    SqlCommand cmd = new SqlCommand(sql, conn);
    //執行SQL語句
    cmd.ExecuteNonQuery();
    //彈出訊息提示刪除成功
    MessageBox.Show("刪除成功!");
    //呼叫查詢全部的方法,重新整理DataGridView控制元件中的資料
    QueryAllCourse();
  }
  catch (Exception ex)
  {
    MessageBox.Show("刪除失敗!" + ex.Message);
  }
  finally
  {
    if (conn != null)
    {
      //關閉資料庫連線
      conn.Close();
    }
  }
}

刪除操作的執行效果如下圖所示。

單擊刪除訊息方塊中的「確定」按鈕,'即可重新整理 DataGridView 控制元件中的資料。< 上一頁C# DataGridViewC# DataGridView應用案例下一頁 >

到此這篇關於C#資料表格(DataGridView)控制元件的應用案例的文章就介紹到這了,更多相關C# DataGridView應用內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com