如何在前端界面操作数据表
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) { } } }
运行结果如下图: