學習心得之如何在前端界面操作數據表
如何在前端界面操作數據表
CurrentCell 屬性: 取得或者修改當前單元格的內容
Console.WriteLine(DataGridView1.CurrentCell.Value);// 取得當前單元格內容
Console.WriteLine(DataGridView1.CurrentCell.ColumnIndex);// 取得當前單元格的列 Index
Console.WriteLine(DataGridView1.CurrentCell.RowIndex);// 取得當前單元格的行 Index
StartPosition屬性:使窗體在屏幕中間顯示
this.StartPosition = System.Windows.Forms.FormStartPosition.Manual;//this表示的是窗體對象
AllowUserToAddRows屬性:不顯示DataGridView下面的新行
this.dgvFenxzgl.AllowUserToAddRows = false;
AllowUserToOrderColumns 屬性:(為 True 的時候) 用戶可以自由調整列的順序。
當用戶改變列的順序的時候,其本身的 Index 不會改變,但是 DisplayIndex 改變了。你也可以通過程序改變 DisplayIndex 來改變列的順序。 列順序發生改變時會引發 ColumnDisplayIndexChanged 事件:
// DataGridView1的ColumnDisplayIndexChanged事件處理方法
private void DataGridView1_ColumnDisplayIndexChanged(object sender,
DataGridViewColumnEventArgs e)
{
Console.WriteLine("{0} 的位置改變到 {1} ",
e.Column.Name, e.Column.DisplayIndex);
}
dataGridView1.Rows.Add()事件: DataGridView控件增加新的行
dataGridView1.Rows[index].Cells[0].Value = "1"
行、列的隱藏
DataGridView1.Columns[0].Visible = false; // DataGridView1的第一列隱藏
DataGridView1.Rows[0].Visible = false; // DataGridView1的第一行隱藏
行和列的刪除
DataGridView1.Columns.RemoveAt(0); // 刪除第一列
DataGridView1.Rows.RemoveAt(0); //刪除第一行
刪除選中行
foreach (DataGridViewRow r in DataGridView1.SelectedRows)
{
if (!r.IsNewRow)
{
DataGridView1.Rows.Remove(r);
}
}
下面是綜合的一個例子,在數據表中進行查詢,增加,修改,查詢。代碼如下:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Data.SqlClient; namespace 藥品工作站 { public partial class 采購計劃 : Form { public 采購計劃() { InitializeComponent(); this.StartPosition = FormStartPosition.CenterScreen; //本窗體啟動位置設為屏幕中央; this.dgv.BackgroundColor = Color.White; //數據網格視圖的背景色設為白色; } private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) { } private void 增加_Click(object sender, EventArgs e) { SqlConnection sqlConnection = new SqlConnection(); //聲明並實例化SQL連接; sqlConnection.ConnectionString = "Server=(local);Database=藥品工作站管理系統;Integrated Security=sspi"; SqlCommand sqlCommand = new SqlCommand(); sqlCommand.Connection = sqlConnection; SqlCommand insertCommand = new SqlCommand(); insertCommand.Connection = sqlConnection; insertCommand.CommandText = //指定SQL命令的命令文本; "INSERT 采購計劃" + "(采購編號,制造商編號,藥品名稱,藥品數量,藥品單位,進藥單價,賣藥單價)" + " VALUES(@采購編號,@制造商編號,@藥品名稱,@藥品數量,@藥品單位,@進藥單價,@賣藥單價);"; insertCommand.Parameters.Add("@采購編號", SqlDbType.Int, 0, "采購編號"); insertCommand.Parameters.Add("@制造商編號", SqlDbType.Int, 0, "制造商編號"); insertCommand.Parameters.Add("@藥品名稱", SqlDbType.Char,20, "藥品名稱"); insertCommand.Parameters.Add("@藥品數量", SqlDbType.Int, 0, "藥品數量"); insertCommand.Parameters.Add("@藥品單位", SqlDbType.Char,20, "藥品單位"); insertCommand.Parameters.Add("@進藥單價", SqlDbType.Int, 0, "進藥單價"); insertCommand.Parameters.Add("@賣藥單價", SqlDbType.Int, 0, "賣藥單價"); SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(); //聲明並實例化SQL數據適配器; sqlDataAdapter.InsertCommand = insertCommand; DataTable Table1 = (DataTable)this.dgv.DataSource; sqlConnection.Open(); int rowAffected = sqlDataAdapter.Update(Table1); sqlConnection.Close(); //關閉SQL連接; MessageBox.Show("增加成功" ); } private void 更改_Click(object sender, EventArgs e) { SqlConnection sqlConnection = new SqlConnection(); //聲明並實例化SQL連接; sqlConnection.ConnectionString = "Server=(local);Database=藥品工作站管理系統;Integrated Security=sspi"; SqlCommand sqlCommand = new SqlCommand(); sqlCommand.Connection = sqlConnection; SqlCommand updateCommand = new SqlCommand(); updateCommand.Connection = sqlConnection; updateCommand.CommandText = "UPDATE 采購計劃" + " SET 采購編號=@new采購編號,制造商編號=@制造商編號,藥品名稱=@藥品名稱,藥品數量=@藥品數量,藥品單位=@藥品單位,進藥單價=@進藥單價,賣藥單價=@賣藥單價" + " WHERE 采購編號=@Old采購編號;"; updateCommand.Parameters.Add("@new采購編號", SqlDbType.Int, 0, "采購編號"); updateCommand.Parameters.Add("@制造商編號", SqlDbType.Int, 0, "制造商編號"); updateCommand.Parameters.Add("@藥品名稱", SqlDbType.Char, 20, "藥品名稱"); updateCommand.Parameters.Add("@藥品數量", SqlDbType.Int, 0, "藥品數量"); updateCommand.Parameters.Add("@藥品單位", SqlDbType.Char, 20, "藥品單位"); updateCommand.Parameters.Add("@進藥單價", SqlDbType.Int, 0, "進藥單價"); updateCommand.Parameters.Add("@賣藥單價", SqlDbType.Int, 0, "賣藥單價"); updateCommand.Parameters.Add("@Old采購編號", SqlDbType.Int, 0, "采購編號"); updateCommand.Parameters["@Old采購編號"].SourceVersion = DataRowVersion.Original; SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(); sqlDataAdapter.UpdateCommand = updateCommand; DataTable Table1 = (DataTable)this.dgv.DataSource; sqlConnection.Open(); int rowAffected = sqlDataAdapter.Update(Table1); sqlConnection.Close(); MessageBox.Show("更改成功"); } private void 查詢_Click_1(object sender, EventArgs e) { SqlConnection sqlConnection = new SqlConnection(); //聲明並實例化SQL連接; sqlConnection.ConnectionString = "Server=(local);Database=藥品工作站管理系統;Integrated Security=sspi"; //在字符串變量中,描述連接字符串所需的服務器地址、數據庫名稱、集成安全性(即是否使用Windows驗證); SqlCommand sqlCommand = new SqlCommand(); //聲明並實例化SQL命令; SqlCommand sqlCommand2 = new SqlCommand(); //聲明並實例化SQL命令; sqlCommand.Connection = sqlConnection; //將SQL命令的連接屬性指向SQL連接; sqlCommand2.Connection = sqlConnection; //將SQL命令的連接屬性指向SQL連接; sqlCommand.CommandText = "SELECT * FROM 包裝單位;"; //指定SQL命令的命令文本;該命令查詢所有班級,以用作下拉框數據源; sqlCommand2.CommandText = "SELECT * FROM 采購計劃;"; //指定SQL命令的命令文本;該命令查詢所有學生; SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(); //聲明並實例化SQL數據適配器; sqlDataAdapter.SelectCommand = sqlCommand2; //將SQL數據適配器的查詢命令屬性指向SQL命令; DataTable cTable = new DataTable(); //聲明並實例化數據表,用於保存所有班級,以用作下拉框數據源; SqlDataAdapter sqlDataAdapter2 = new SqlDataAdapter(); //聲明並實例化SQL數據適配器; sqlDataAdapter2.SelectCommand = sqlCommand; //將SQL數據適配器的查詢命令屬性指向SQL命令; DataTable dTable = new DataTable(); //聲明並實例化數據表,用於保存所有學生,以用作數據網格視圖的數據源; sqlConnection.Open(); //打開SQL連接; sqlDataAdapter.Fill(cTable); //SQL數據適配器讀取數據,並填充班級數據表; sqlDataAdapter2.Fill(dTable); //SQL數據適配器讀取數據,並填充學生數據表; sqlConnection.Close(); //關閉SQL連接; this.dgv.Columns.Clear(); //數據網格視圖的列集合清空; this.dgv.DataSource = cTable; //將數據網格視圖的數據源設為學生數據表; this.dgv.Columns["藥品單位"].Visible = false; DataGridViewComboBoxColumn dColumn = new DataGridViewComboBoxColumn(); //聲明並實例化數據網格視圖下拉框列,用於設置學生的班級; dColumn.Name = "單位"; //設置下拉框列的名稱; dColumn.DataSource = dTable; //設置下拉框列的數據源為班級數據表; dColumn.DisplayMember = "單位"; //設置下拉框列的顯示成員為(包裝單位)名稱(列); //設置下拉框列的值成員為(班級數據表的)編號(列); dColumn.DataPropertyName = "藥品單位"; dColumn.DisplayIndex = 4; //設置下拉框列的顯示順序; this.dgv.Columns.Add(dColumn); } private void 刪除_Click(object sender, EventArgs e) { SqlConnection sqlConnection = new SqlConnection(); //聲明並實例化SQL連接; sqlConnection.ConnectionString = "Server=(local);Database=藥品工作站管理系統;Integrated Security=sspi"; //在字符串變量中,描述連接字符串所需的服務器地址、數據庫名稱、集成安全性(即是否使用Windows驗證); SqlCommand sqlCommand = new SqlCommand(); //聲明並實例化SQL命令; //聲明並實例化SQL命令; sqlCommand.Connection = sqlConnection; //將SQL命令的連接屬性指向SQL連接 SqlCommand deleteCommand = new SqlCommand(); //聲明並實例化SQL命令;該命令用於刪除; deleteCommand.Connection = sqlConnection; //將SQL命令的連接屬性指向SQL連接; deleteCommand.CommandText = //指定SQL命令的命令文本; "DELETE 采購計劃" + " WHERE 采購編號=@采購編號;"; deleteCommand.Parameters.Add("@采購編號", SqlDbType.Int, 0, "采購編號"); foreach (DataGridViewRow r in dgv.SelectedRows) { if (!r.IsNewRow) { dgv.Rows.Remove(r); } } SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(); sqlDataAdapter.DeleteCommand = deleteCommand; DataTable Table1 = (DataTable)this.dgv.DataSource; //聲明數據表,並指向數據網格視圖的數據源;數據源默認類型為object,還需強制轉換類型; sqlConnection.Open(); //打開SQL連接; int rowAffected = sqlDataAdapter.Update(Table1); //SQL數據適配器根據學生數據表提交所有更新,並返回受影響行數; sqlConnection.Close(); //關閉SQL連接; MessageBox.Show("刪除成功!"); } private void 采購計劃_Load(object sender, EventArgs e) { } } }
運行結果如下圖:
學習心得之如何在前端界面操作數據表