机房重构---DataGridView控件(四)---显示数据

妖狐艹你老母 2022-03-20 04:20 466阅读 0赞

我们在D层从数据库中查询出符合我们要求的数据,需要在DataGridView控件上显示出来,怎么做呢?

根据不同显示列的方法,显示数据也有不同的方法

Case1绑定数据源添加列显示数据

两种情况:

一、需要先显示所有数据,然后按照筛选条件显示数据

我们绑定好数据源,运行窗体的时候,我们绑定的所有数据就显示出来了。但是,并不是所有的数据都是我们需要的,我们需要的可能只是满足某些条件的数据。怎么办呢?我们在D层的sql语句中对我们需要的数据进行筛选,返回DataTable类型的对象接收,一层一层的返回。

D层:筛选我们需要的数据

  1. using IDAL;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Data;
  5. using System.Data.SqlClient;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. namespace DAL
  10. {
  11. public class AddorDeleteDAL:AddorDeleteIDAL
  12. {
  13. SQLHelper sqlHelper = new SQLHelper();
  14. public DataTable InqUser(Entity.User user)
  15. {
  16. SqlParameter[] sqlParms = { new SqlParameter("@authority", user.Authority) };
  17. string sql = "select * from [User] where Authority=@authority";
  18. DataTable table = sqlHelper.ExecuteQuery(sql, sqlParms, CommandType.Text);
  19. return table;
  20. }
  21. }
  22. }

除了U层以外,其他层的写法都千篇一律,这里就不多说了,直接看U层

  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Windows.Forms;
  10. namespace LoginUI
  11. {
  12. public partial class FrmAddorDeleteUser : Form
  13. {
  14. public FrmAddorDeleteUser()
  15. {
  16. InitializeComponent();
  17. }
  18. Entity.User user = new Entity.User();
  19. Facade.AddorDeleteFacade facade = new Facade.AddorDeleteFacade();
  20. private void FrmAddorDeleteUser_Load(object sender, EventArgs e)
  21. {
  22. this.userTableAdapter.Fill(this.loginDataSet.User);// TODO: 这行代码将数据加载到表“loginDataSet.User”中。您可以根据需要移动或删除它。
  23. comAuthority.Items.Add("一般用户");
  24. comAuthority.Items.Add("操作员");
  25. comAuthority.Items.Add("管理员");
  26. }
  27. private void comAuthority_SelectedIndexChanged(object sender, EventArgs e)
  28. {
  29. user.Authority = comAuthority.Text;//获取用户选择的条件,传给实体
  30. DataTable table = facade.InqUser(user);
  31. if(table.Rows.Count==0)//如果从数据库中查出来的数据为空
  32. {
  33. MessageBox.Show("没有符合条件的数据!");
  34. }
  35. else
  36. {
  37. dataGridView1.DataSource = table;//显示从数据库中查出来的数据
  38. }
  39. }
  40. }
  41. }

绑定数据源之后,系统自动生成一行代码,意思是在系统运行之后,自动加载绑定User表的所有数据。

20190228152200886.png

获取用户选择的条件,传给实体

定义DataTable类型的table对象接收调用外观层的InqUser方法返回来的值

判断返回值的行数是否为空,如果为空,提示没有符合条件的数据;不为空,显示查询到的结果

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hlamluZ2ZhbmcxMjM_size_16_color_FFFFFF_t_70

二、直接按照筛选条件显示数据

如果我们不需要在程序运行显示所有数据,而是按照我们的筛选条件显示数据的话,有一个非常简单的做法:

单击dataGridView控件的小按钮,选择添加查询

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hlamluZ2ZhbmcxMjM_size_16_color_FFFFFF_t_70 1

在查询文本中输入查询条件就可以了

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hlamluZ2ZhbmcxMjM_size_16_color_FFFFFF_t_70 2

Case2手动添加列显示数据

手动绑定列也分为两种情况:

一、按照顺序添加了一张表的所有字段

这里定义了一数组,按照顺序依次给表里的字段赋值

  1. private void btnInquiry_Click_1(object sender, EventArgs e)
  2. {
  3. DataTable list1 = facade.inqPersonaldata(student);//定义DataTable类型的list接收调用外观层传回来的数据
  4. foreach (DataRow line in list1.Rows)//循环list1
  5. {
  6. dataGridView.RowHeadersVisible = false; //隐藏行头
  7. dataGridView.Rows.Add(line.ItemArray); //绑定数组,按照顺序依次赋值
  8. dataGridView.AutoSizeColumnsMode=DataGridViewAutoSizeColumnsMode.AllCells; //列宽自动适应数据的长度
  9. dataGridView.AllowUserToAddRows = false;//不能添加行
  10. }
  11. }

二.只添加了数据表中的某个字段

这里定义的是一个int类型的索引,按照DataGridView控件中的列和数据库表中的字段一一对应赋值

  1. private void btnInquiry_Click(object sender, EventArgs e)
  2. {
  3. DataTable list= facade.InquiryBalance1(user);//定义DataTable类型的list接收调用外观层传回来的数据
  4. foreach (DataRow line in list.Rows)//循环list
  5. {
  6. dataGridView.RowHeadersVisible = false; //隐藏行头
  7. int index = this.dataGridView.Rows.Add();//添加空行
  8. this.dataGridView.Rows[index].Cells[0].Value = line.ItemArray[0];//将从数据里取出的某一列赋给dataGridView中的某一列
  9. this.dataGridView.Rows[index].Cells[1].Value = line.ItemArray[3];
  10. dataGridView.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells; //列宽自动适应数据的长度
  11. dataGridView.AllowUserToAddRows = false;//不能添加行
  12. }
  13. }

又是不同的方法,还是那句话,适合自己的才是最好的!

发表评论

表情:
评论列表 (有 0 条评论,466人围观)

还没有评论,来说两句吧...

相关阅读