【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);
}

五、展示结果

相关推荐
皓月盈江1 小时前
Go读写TXT文件
开发语言·后端·golang·go·读写txt文件·bufio·go读写txt
qq_401700411 小时前
Qt Signal Mapper:一堆按钮,怎么共用一个槽函数
开发语言·qt
蜗牛互联网2 小时前
Java HttpClient 调用 Gemini 图像理解与金额字段校验
java·开发语言·人工智能·后端·python
蜗牛互联网2 小时前
Python Responses API视觉输入与本地金额校验最小实现
java·开发语言·人工智能·后端·python
czq_26867194872 小时前
Python打卡第34天
开发语言·python·机器学习
QQ14220784492 小时前
从 C# WinForms 到 Flask + SQLite:期刊出版 XML 生成器(JATS)重构实践
sqlite·flask·c#
小黄人软件2 小时前
粘贴助手C++版 支持 Windows 7 / 10 / 11 不会出现缺少api-ms-win-core-path-11-1-0.dll
开发语言·c++·windows
半亩码田3 小时前
C#转Python第4.7篇:logging:Python 的标准日志库
开发语言·python·c#
程序员老陆3 小时前
从汇编层面理解 C++ 多线程
开发语言·c++·程序设计