学习笔记(7W)

 

思维导图如下:

 

1.实现类似下拉框的功能

首先需创建两个连接,以连接两张表。此处以连接科室\部门表和调用表为例,代码如下:

            SqlConnection sqlConnection = new SqlConnection();

            sqlConnection.ConnectionString =

                "Server=(local);Database=DB_Equipment;Integrated Security=sspi";

            SqlCommand sqlCommand = new SqlCommand();

            SqlCommand sqlCommand2 = new SqlCommand();

            sqlCommand.Connection = sqlConnection;

            sqlCommand2.Connection = sqlConnection;

            sqlCommand.CommandText = "SELECT * FROM tb_department;";

            sqlCommand2.CommandText = "SELECT tb_use.No,tb_inventory.EquipmentName,tb_use.Quantity,tb_user.UserName,tb_use.DepartmentNo,tb_use.Date FROM tb_use,tb_inventory,tb_user WHERE tb_inventory.EquipmentNo=tb_use.EquipmentNo AND tb_user.UserNo=tb_use.UserNo;";

            SqlDataAdapter sqlDataAdapter = new SqlDataAdapter();

            sqlDataAdapter.SelectCommand = sqlCommand;

            DataTable departmentTable = new DataTable();

            SqlDataAdapter sqlDataAdapter2 = new SqlDataAdapter();

            sqlDataAdapter2.SelectCommand = sqlCommand2;

            DataTable useTable = new DataTable();

            sqlConnection.Open();

            sqlDataAdapter.Fill(departmentTable);

            sqlDataAdapter2.Fill(useTable);

            sqlConnection.Close();

由于此处连接的tb_use的列都是编号,但是需显示名称比较容易查看,所以得利用sql语句以查询其他表编号所对应的名。

由于显示在数据表的列得转换成中文,所以可以直接在数据表的编辑列中设置,也可编写下列代码:

this.dataGridView1.DataSource = useTable;

this.dataGridView1.Columns["No"].HeaderText = "编号";

this.dataGridView1.Columns["EquipmentName"].HeaderText = "器材名";

this.dataGridView1.Columns["Quantity"].HeaderText = "调用数量";

this.dataGridView1.Columns["UserName"].HeaderText = "调用人姓名";

this.dataGridView1.Columns["Date"].HeaderText = "调用日期";

实现下拉框功能,首先得设置下拉框的数据源为科室表,然后设置下拉框列的显示成员为(科室数据表的)名称(列),然后设置下拉框列的值成员为(科室数据表的)编号(列),代码如下:

departmentColumn.DataSource = departmentTable;
departmentColumn.DisplayMember = "Name";

departmentColumn.ValueMember = "No";

由于数据表中不需要显示科室编号,所以需将科室编号列隐藏,接着设置下拉框列的数据属性名称为(调用数据表的)科室编号(列),显示顺序,自动调整列宽模式为填充,然后将下拉框列加入数据网格视图的列集合,代码如下:

this.dataGridView1.Columns["DepartmentNo"].Visible = false;

 

departmentColumn.DataPropertyName = "DepartmentNo";

departmentColumn.DisplayIndex = 4;

departmentColumn.AutoSizeMode=DataGridViewAutoSizeColumnMode.Fill;

this.dataGridView1.Columns.Add(departmentColumn);

 

 

2.查询搜索

1)为窗体类定义如下的实例变量:

SqlDataAdapter da;

DataSet ds;

2)编写自定义方法Fill(),向DataGridView控件中填充数据。同上库存表中保存的是供应商编号,而窗体上要显示的是供应商名称,所以同样用sql语句连接两张表。为了实现根据选择的查询条件,拼接产生sql语句。然后通过SqlDataAdapter的Fill方法填充数据集,获取数据,最后设置DataGridView控件的DataSourse属性。具体代码如下:

private void Fill()

        {

            SqlConnection sqlConnection = new SqlConnection();

            sqlConnection.ConnectionString =

                "Server=(local);Database=DB_Equipment;Integrated Security=sspi";

            string sql = "select EquipmentNo,EquipmentName,Quantity,Name,Date from tb_inventory,tb_supplier where tb_inventory.SupplierNo=tb_supplier.No";

            if (cbo_condition.Text == "器材编号")

                sql += " and EquipmentNo like '%"+ txb_search.Text.Trim()+"%'";

            else

                if(cbo_condition.Text=="器材名")

                    sql += " and EquipmentName like '%"+ txb_search.Text.Trim()+"%'";

            sql += " order by tb_inventory.EquipmentNo desc";

            using (SqlConnection conn = new SqlConnection(sqlConnection.ConnectionString))

            {

                da = new SqlDataAdapter(sql, conn);

                ds = new DataSet();

                da.Fill(ds);

                dataGridView1.DataSource = ds.Tables[0];

            }

        }

3)在窗体的Load事件中调用Fill方法,即可在进入此窗体时就显示数据集。

4)在“查询”按钮的单击事件中调用Fill方法,即可按照选择的查询条件查询所需要的信息。

 

转载于:https://www.cnblogs.com/JKOBGHJ/p/9845038.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值