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