【C#桌面客户端系列学习-7】数据查询展示

目录

一、前言

二、窗体设计

1、新建窗体

2、新建DataGridView控件

三、在窗体设计里添加列及表头

1、选中窗体上的DataGridView控件

2、编辑列

3、添加列

4、绑定列属性

5、其他属性设置

四、查询数据事件

五、展示结果


一、前言

使用前面的数据库操作工具类实现数据表查询,并通过表格展示。

【C#桌面客户端系列学习-4】封装数据库基础操作工具类(CURD)-CSDN博客

数据表

二、窗体设计

1、新建窗体

新建一个windows窗体,命名为tables。

2、新建DataGridView控件

在工具箱中拖出一个DataGridView到窗体,命名为dgvList,在放一个Button,文本为查询表格

三、在窗体设计里添加列及表头

1、选中窗体上的DataGridView控件

2、编辑列

点击控件右上角**▷**标记,选择"编辑列"

3、添加列

在编辑列弹出的对话框的左下角"添加(A)",会弹出添加列对话框

在名称中输入colTitle ,格式为col+字段名,其中title是数据库的字段名,页眉文本是表头。以此类推,把所有需要展示的列都添加上。

4、绑定列属性

上面一步的列添加完后,选择左侧的列,在右侧会出现该列对应的属性,在这里设置该列的DataPropertyName属性,每列都要设置,DataPropertyName属性值必须与数据库字段名一致,否则查出来显示的是空白行。

在这里也可以设置列宽和对齐方式等属性。

名称 页眉文本 添加列后设置DataPropertyName(与数据库字段名一致)
colId ID id
colTitle 标题 title
colCity 城市 city
colSex 性别 sex
colLikes 爱好 likes
colDesc 描述 description

5、其他属性设置

选择表格DataGridView控件,右键属性,找到AllowUserToAddRows 设置为False,表示不要末尾那个空白新增行;ReadOnly 设置True,表示列表展示推荐只读;SelectionMode设FullRowSelect。其他的根据个人需求设置。

四、查询数据事件

点击窗体上的"查询表格"按钮,进入该按钮的事件函数。因为sex和likes存储的是数字,需要转换后再在前端展示。

cs 复制代码
private void search_Click(object sender, EventArgs e)
{
    string sql = "SELECT  id,title,city, CASE sex WHEN  1 THEN '男' WHEN 2 THEN '女' ELSE '未知' END AS sex, likes,description FROM form ORDER BY id ASC";
    DataTable dt = MySqlHelper.ExecuteDataTable(sql);

    dgvList.AutoGenerateColumns = false;  // 禁止自动生成列,必须放在绑定之前
    // 绑定数据
    dgvList.DataSource = dt;

    // 格式化 likes 的显示
    foreach (DataGridViewRow row in dgvList.Rows)
    {
        if (row.IsNewRow) continue;

        // ---- likes: "1,2,3" -> "写字、阅读、发呆" ----
        string likesVal = row.Cells["colLikes"].Value?.ToString();
        row.Cells["colLikes"].Value = ConvertLikes(likesVal);
    }
}

// likes 转换工具方法
private string ConvertLikes(string likes)
{
    if (string.IsNullOrEmpty(likes)) return "";

    var map = new Dictionary<string, string>
    {
        { "1", "写字" },
        { "2", "阅读" },
        { "3", "发呆" }
    };

    var result = new List<string>();
    foreach (string p in likes.Split(','))
    {
        if (map.ContainsKey(p.Trim()))
            result.Add(map[p.Trim()]);
    }
    return string.Join("、", result);
}

五、展示结果

相关推荐
我是唐青枫12 分钟前
Kotlin Delegation 委托详解
开发语言·kotlin
qq_4069810316 分钟前
共享变量一 关于extern与const
开发语言·c++
FRing031 小时前
JavaScript入门到精通三十二(深拷贝、浅拷贝、递归函数)
开发语言·前端·javascript
小嘉丶学长2 小时前
Day14 · 字典与集合
java·开发语言·网络·python·学习·1024程序员节
迪菲赫尔曼2 小时前
【基础篇 11】把官方源码放到服务器:版本、解压层级和安装位置,一次弄清楚
运维·服务器·开发语言·人工智能·python·yolo·目标检测
chari克里3 小时前
QT5.15.2 + msvc2022部署全流程说明(windows可联网环境)
开发语言·c++·qt
Hello.Reader3 小时前
tsrs 技术解析用 Rust 移植 TypeScript 7,类型检查还能怎样提速?
开发语言·rust·typescript
透明的玻璃杯3 小时前
VS2015+QT 多线程
开发语言·qt
码匠许师傅4 小时前
【C++三方组件】mbedTLS:面向嵌入式的轻量 TLS
开发语言·c++
迪菲赫尔曼4 小时前
【基础篇 12】把环境与源码接起来:检查 GPU,再安装服务器上的项目
运维·服务器·开发语言·人工智能·python·yolo·目标检测