C#项目--GridControl数据绑定及数据引入

news2024/9/24 17:18:49

系列文章

C#项目–业务单据号生成器(定义规则、自动编号、流水号)
本文链接:https://blog.csdn.net/youcheng_ge/article/details/129129787

C#项目–开始日期结束日期范围计算(上周、本周、明年、前年等)
本文链接:https://blog.csdn.net/youcheng_ge/article/details/129040663

C#项目–数据实体类使用
本文链接:https://blog.csdn.net/youcheng_ge/article/details/128816638

C#项目–单据审批流方案
本文链接:https://blog.csdn.net/youcheng_ge/article/details/128972545

C#项目–二维码标签制作及打印(完整版)
本文链接:https://blog.csdn.net/youcheng_ge/article/details/126884228

C#项目–条码管理操作手册
本文链接:https://blog.csdn.net/youcheng_ge/article/details/126589496

C#项目–WebAPI发布和IIS部署,及异常处理
本文链接:https://blog.csdn.net/youcheng_ge/article/details/126539836

C#项目–提高编程效率,代码自动生成
本文链接:https://blog.csdn.net/youcheng_ge/article/details/126890673

C#项目–提高编程效率,Excel数据导入工具
本文链接:https://blog.csdn.net/youcheng_ge/article/details/126427323

C#项目–Windows服务(Service)安装及启停方案
本文链接:https://blog.csdn.net/youcheng_ge/article/details/124053794

C#项目–穿透Session隔离,服务调用外部程序(无窗体界面解决)
本文链接:https://blog.csdn.net/youcheng_ge/article/details/124053033

C#项目–任务计划实现,使用Quartz类
本文链接:https://blog.csdn.net/youcheng_ge/article/details/123667723

C#项目–《周计划管理关于产前准备模块》解决方案20200203
本文链接:https://blog.csdn.net/youcheng_ge/article/details/122919543

C#项目–项目中,源码解析的正则表达式
本文链接:https://blog.csdn.net/youcheng_ge/article/details/118337074

C#项目–如何获取文件版本和MD5值
本文链接:https://blog.csdn.net/youcheng_ge/article/details/112513871

C#项目–如何测试网络是否连通
本文链接:https://blog.csdn.net/youcheng_ge/article/details/110137288

C#项目–打印模板解决方案(自定义模板、条形码、二维码、图片)
本文链接:https://blog.csdn.net/youcheng_ge/article/details/129415723

C#项目–软件打包、安装包制作,我推荐Inno Setup
本文链接:https://blog.csdn.net/youcheng_ge/article/details/123665633


文章目录

  • 系列文章
  • 前言
  • 一、面临问题
  • 二、解决方案
  • 三、软件开发(源码展示)
    • 3.1 数据实体类
    • 3.2 引入事件
    • 3.3 引入窗体加载时,自动取数
    • 3.4 引入窗体,按钮事件
    • 3.5 新增窗体,保存数据
    • 3.6 窗体加载绑定数据
  • 四、运行效果
  • 五、资源链接


前言

我能抽象出整个世界,但是我不能抽象你。 想让你成为私有常量,这样外部函数就无法访问你。 又想让你成为全局常量,这样在我的整个生命周期都可以调用你。 可惜世上没有这样的常量,我也无法定义你,因为你在我心中是那么的具体。

哈喽大家好,本专栏为【项目实战】专栏,有别于【底层库】专栏,本专栏介绍项目开发过程中,遇到问题的解决方案,是我实际项目开发过程,相对成熟、可靠方法的提炼,我将这些问题的处理思路梳理,撰写本文分享给大家,大家遇到类似问题,可按本文方案处理。

本专栏会持续更新,不断完善,大家有任何问题,可以私信我。本专栏之间关联性较弱(文章之间依赖性较弱,没有阅读顺序区分)。如果您对本专栏感兴趣,欢迎关注吧,我将带你用最简洁的代码,实现最复杂的功能。

·提示:本专栏为项目实战篇,未接触项目开发的同学可能理解困难,不推荐阅读。


一、面临问题

我们已经确定了大致的方向,与业务部门沟通,进一步确定标签需要支持以下目标:
①公司存在保密要求,标签不便显示产品信息,但特定人员可以看懂。
②编号要可以人工复核,双重保障,防止识别不出可以人工干预。

二、解决方案

程序主页面如下所示,工具栏增加“引入”按钮,从新窗体引入数据。
在这里插入图片描述

三、软件开发(源码展示)

3.1 数据实体类

以下代码由【自动代码工具】生成,拷贝到项目中,可以直接使用。

using System;

namespace MES_Client
{
    /// </summary>
    /// Model层 t_material_input_detail(以下代码由工具自动生成,有错误请反馈)
    /// </summary>
    public class T_material_input_detail
    {
        public T_material_input_detail() { }
        public  string 入库单号 { get; set; }
        public  int 序号 { get; set; }
        public  string 品名编码 { get; set; }
        public  string 品名 { get; set; }
        public  string 规格 { get; set; }
        public  float 重量 { get; set; }
        public  int 入库数量 { get; set; }
        public  string 单位 { get; set; }
        public  string 采购订单号 { get; set; }
        public  string 供应商编码 { get; set; }
        public  string 批次号 { get; set; }
        public  string 备注 { get; set; }
        public  int id { get; set; }
    }
}

3.2 引入事件

我这里进行封装,只要Bitmap对象就行了,传入的值是标签的编号。

private void TBTN_Import_Click(object sender, EventArgs e)
        {
            PCForm_Store_MaterialInput_Import frm = new PCForm_Store_MaterialInput_Import();
            frm.StartPosition = FormStartPosition.CenterParent;
            if (frm.ShowDialog() == DialogResult.OK)
            {
                DataTable l_dtDetail = frm.m_dtWuTiao;
                foreach (DataRow dataRow in l_dtDetail.Rows)
                {
                    T_material_input_detail t_detail = new T_material_input_detail();
                    t_detail.序号 = m_listDetail.Count + 1;
                    t_detail.入库单号 = baseDataInput_入库单号.StringValue;
                    t_detail.品名编码 = dataRow["编号"].ToString();
                    t_detail.品名 = dataRow["名称"].ToString();
                    t_detail.规格 = dataRow["规格"].ToString();
                    t_detail.重量 = 10;
                    t_detail.入库数量 = 1;
                    t_detail.单位 = "根";
                    t_detail.采购订单号 = dataRow["采购订单号"].ToString();
                    t_detail.供应商编码 = dataRow["供应商"].ToString();
                    t_detail.批次号 = dataRow["批次号"].ToString();
                    t_detail.备注 = "";

                    m_listDetail.Add(t_detail);
                }
                GC_Detail.RefreshDataSource();
            }
        }

3.3 引入窗体加载时,自动取数

以下代码也是由【代码工具】自动生成,直接拷贝到项目中。

 private void 原材料入库_引入_Load(object sender, EventArgs e)
        {
            BaseMySQLSheet 钨条打标 = new BaseMySQLSheet()
            {
                SheetName = "钨条打标纪录",
                SQLSelect = "SELECT * ",
                SQLFrom = " FROM dl_mes.t_wutiao",
                SQLWhere = " WHERE (1=1) ",
                SQLCondition = "",
                SQLOrderBy = "",
            };

            钨条打标.Add("编号", "t_wutiao.编号", MySQL数据类型.MySQL_varchar);
            钨条打标.Add("名称", "t_wutiao.名称", MySQL数据类型.MySQL_varchar);
            钨条打标.Add("规格", "t_wutiao.规格", MySQL数据类型.MySQL_varchar);
            钨条打标.Add("重量", "t_wutiao.重量", MySQL数据类型.MySQL_varchar);
            钨条打标.Add("采购订单号", "t_wutiao.采购订单号", MySQL数据类型.MySQL_varchar);
            钨条打标.Add("供应商", "t_wutiao.供应商", MySQL数据类型.MySQL_varchar);
            钨条打标.Add("批次号", "t_wutiao.批次号", MySQL数据类型.MySQL_varchar);
            钨条打标.Add("编辑人", "t_wutiao.编辑人", MySQL数据类型.MySQL_varchar);
            钨条打标.Add("编辑日期", "t_wutiao.编辑日期", MySQL数据类型.MySQL_datetime);
            钨条打标.Add("每批数量", "t_wutiao.每批数量", MySQL数据类型.MySQL_int);
            baseGridControl1.MySQLSheet = 钨条打标;
        }

3.4 引入窗体,按钮事件

要支持“拖拉多选”,可以按批引入数据,复制以下代码:

 private void simpleButton_OK_Click(object sender, EventArgs e)
        {
            int[] l_intSelect = baseGridControl1.GridView_Main.GetSelectedRows();

            if (l_intSelect.Length > 0)
            {
                DataTable l_dtSelect = new DataTable();
                l_dtSelect = baseGridControl1.DtDataAll.Clone();//复制表结构,否则插入不进去数据

                foreach (int item in l_intSelect)
                {
                    DataRow dataRow = baseGridControl1.GridView_Main.GetDataRow(item);
                    l_dtSelect.ImportRow(dataRow);
                }

                m_dtWuTiao = l_dtSelect;
                DialogResult = DialogResult.OK;
            }
        }

3.5 新增窗体,保存数据

//保存
        private void TBTN_Save_Click(object sender, EventArgs e)
        {
            T_material_input_master t_Master = new T_material_input_master();
            t_Master.入库单号 = baseDataInput_入库单号.StringValue;
            t_Master.入库类型 = "钨条入库";
            t_Master.入库日期 = baseDataInput_制单日期.DateTimeValue;
            t_Master.总重量 = 100;
            t_Master.仓库 = baseDataInput_仓库.StringValue;
            t_Master.货位 = baseDataInput_货位.StringValue;
            t_Master.批次号 = baseDataInput_批次号.StringValue;
            t_Master.编辑人 = baseDataInput_制单人.StringValue;
            t_Master.编辑日期 = baseDataInput_制单日期.DateTimeValue;
            m_listMaster.Add(t_Master);

            //主表
            m_RetSaveDataMaster = ConvertJson.SerializeObject(m_listMaster);

            //明细
            m_RetSaveDataDetail = ConvertJson.SerializeObject(m_listDetail);

            DialogResult = DialogResult.OK;
        }

        //引入
        private void TBTN_Import_Click(object sender, EventArgs e)
        {
            PCForm_Store_MaterialInput_Import frm = new PCForm_Store_MaterialInput_Import();
            frm.StartPosition = FormStartPosition.CenterParent;
            if (frm.ShowDialog() == DialogResult.OK)
            {
                DataTable l_dtDetail = frm.m_dtWuTiao;
                foreach (DataRow dataRow in l_dtDetail.Rows)
                {
                    T_material_input_detail t_detail = new T_material_input_detail();
                    t_detail.序号 = m_listDetail.Count + 1;
                    t_detail.入库单号 = baseDataInput_入库单号.StringValue;
                    t_detail.品名编码 = dataRow["编号"].ToString();
                    t_detail.品名 = dataRow["名称"].ToString();
                    t_detail.规格 = dataRow["规格"].ToString();
                    t_detail.重量 = 10;
                    t_detail.入库数量 = 1;
                    t_detail.单位 = "根";
                    t_detail.采购订单号 = dataRow["采购订单号"].ToString();
                    t_detail.供应商编码 = dataRow["供应商"].ToString();
                    t_detail.批次号 = dataRow["批次号"].ToString();
                    t_detail.备注 = "";

                    m_listDetail.Add(t_detail);
                }
                GC_Detail.RefreshDataSource();
            }
        }

3.6 窗体加载绑定数据

        private void PCForm_Store_MaterialOutput_Edit_Load(object sender, EventArgs e)
        {
            baseDataInput_出库单号.StringValue = AutoCodeClient.GetAutoCode(编号规则.材料领用出库单号规则,
                "t_material_output_master", "出库单号");

            baseDataInput_制单人.StringValue = "花北城";
            baseDataInput_制单日期.DateTimeValue = DateTime.Now;

            GC_Detail.DataSource = m_listDetail;
        }

四、运行效果

以下演示仅仅我的测试程序,非正式项目,这界面不符合我的UI要求,发给客户会被驳回。
在这里插入图片描述
在这里插入图片描述

五、资源链接

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/400210.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

KUKA机器人修改机器人名称和IP地址的具体方法示例

KUKA机器人修改机器人名称和IP地址的具体方法示例 修改机器人名称 如下图所示,首先切换用户组到管理员,输入默认密码:kuka, 如下图所示,点击菜单键—投入运行—机器人数据, 如下图所示,此时可以看到机器人的名称为rrr445, 如下图所示,修改之后,点击左侧的“”…

C#项目--打印模板解决方案(自定义模板、条形码、二维码、图片)

系列文章 C#项目–业务单据号生成器&#xff08;定义规则、自动编号、流水号&#xff09; 本文链接&#xff1a;https://blog.csdn.net/youcheng_ge/article/details/129129787 C#项目–开始日期结束日期范围计算&#xff08;上周、本周、明年、前年等&#xff09; 本文链接&…

win11安装ubuntu子系统与桌面 填坑记录

win11安装ubuntu子系统win11可以直接从应用市场安装ubuntu子系统。详细安装步骤见参考资料。这里列出一些博主遇到的问题。填坑之路从应用市场获取ubuntu系统时会报0x80240438或者0x80072efd等错误。网络连接有问题&#xff0c;关闭windows防火墙再试&#xff0c;多试几遍安装u…

【刷题笔记】--二分-P2440 木材加工

题目&#xff1a; 思路&#xff1a; 先在所有树中找到最长的树&#xff0c;从 1 到 这个最长的树的长度 的所有数作为二分查找的值&#xff0c;让每棵树除这个值&#xff0c;表示可以切出几段出来&#xff0c;累加在一起得到s&#xff0c;s表示一共有几段。s与k比较&#xf…

windows如何安装两个版本的mysql的方法

Windows上安装两个版本的mysql 背景&#xff1a;在学习项目的时候&#xff0c;项目中使用mysql5.7的版本&#xff0c;而自己的windows系统中安装的是mysql8.0版本&#xff0c;在尝试将项目中的mysql5.7版本的代码更改到8.0版本后仍然报错&#xff0c;故尝试更改windows系统中的…

低代码有哪些典型应用场景?

低代码有哪些典型应用场景&#xff1f; 低代码是一种全新的应用开发方式&#xff0c;它通过可视化的拖拽式界面&#xff0c;将传统的繁琐代码编写转化为简单的拖拽操作&#xff0c;让非技术人员也能够快速地开发出应用程序。 随着数字化转型的不断加速&#xff0c;低代码平台…

1.webpack的基本使用

webpack是做工程化用的&#xff0c;并且可以对代码进行压缩(搞成min.js那样)&#xff0c;处理浏览器端JS兼容性&#xff0c;性能优化 vue-cli与webpack作用相同 目录 1 基本使用 1.1 引入场景 1.2 安装webpack 1.3 配置webpack 1.4 使用webpack 2 webpack.config.…

C++11:lambda表达式

文章目录1. 概念2. 语法3. 示例示例1示例2示例3示例44. 捕捉方式基本方式隐式和混合补充5. 传递lambda表达式示例6. 原理7. 内联属性1. 概念 lambda表达式实际上是一个匿名类的成员函数&#xff0c;该类由编译器为lambda创建&#xff0c;该函数被隐式地定义为内联。因此&#…

某智能驾驶企业:CACTER云网关为O365系统护航

01 客户背景 某智能驾驶企业是一家国际性的高科技创新型企业&#xff0c;在智能驾驶领域处于全球领先地位&#xff0c;专注于为广大客户提供个性化的智能驾驶解决方案&#xff0c;共建美好智能新时代。 使用产品&#xff1a;CACTER邮件安全云网关 02 痛点难点问题 根据Corema…

Hive---sqoop安装教程及sqoop操作

sqoop安装教程及sqoop操作 文章目录sqoop安装教程及sqoop操作上传安装包解压并更名添加jar包修改配置文件添加sqoop环境变量启动sqoop操作查看指定mysql服务器数据库中的表在hive中创建一个teacher表跟mysql的mysql50库中的teacher结构相同将mysql中mysql50库中的sc数据导出到h…

k8s学习之路 | k8s 工作负载 DaemonSet

文章目录1. DaemonSet 基础1.1 什么是 DS1.2 DS 的典型用法1.3 如何编写 DS 资源1.4 DS 示例文件1.5 DS Pod 是如何被调度的1.6 更新 DS1.7 DS 替代方案1.8 DS 工作负载字段描述2. DaemonSet 的使用2.1 每个节点运行一个2.2 DS 更新策略2.3 滚动更新2.4 OnDelete 更新2.6 更新回…

重新认识下网页水印

使用背景图图片 单独使用 css 实现&#xff0c;使用 backgroundImage&#xff0c;backgroundRepeat 将背景图片平铺到需要加水印的容器中即可。 如果希望实现旋转效果&#xff0c;可以借助伪元素&#xff0c;将背景样式放到伪元素中&#xff0c;旋转伪元素实现&#xff1a; &l…

CHAPTER 5 文件共享 - FTP

文件共享 - FTP1 FTP1.1 传输方式1. ASCII传输方式2. 二进制传输模式3. 两种传输方式的区别1.2 支持的模式1. 主动模式(PORT)2. 被动模式(PASV)3. 如何选择4. 为什么绝大部分互联网应用都是被动模式&#xff1f;1.3 搭建FTP服务器&#xff08;使用vsftpd&#xff09;1. 安装软件…

计算机中信息的表示和处理 整数和小数的二进制表示

信息的表示和处理整数进制字移位运算无符号数和有符号数加法运算小数定点表示IEEE 浮点表示规格化和非规格化舍入浮点运算现代计算机存储和处理的信息以二值信号表示&#xff0c;这些二进制数字称为位&#xff0c;为什么要用二进制来进行编码&#xff1f;因为二进制只有1和0两种…

信捷 XDH Ethercat A_STOP指令

本指令使运动中的轴进行减速停止/急停。最常见的情况是用来停止以指定速度运行的轴。只要在运动&#xff0c;都可以用本指令停止。上图中&#xff0c;在M150的上升沿&#xff0c;执行A_STOP指令。A_STOP HD150 D150 M151 K0HD150--输入参数起始地址&#xff0c;HD158--输入参数…

创宇猎幽APT流量监测系统获CSTC年度网络安全优秀案例

近日&#xff0c;由中国软件评测中心发起的“2022 年度网络安全和数据安全优秀案例评选”活动评选结果正式公布。在众多参与案例中&#xff0c;创宇猎幽APT流量监测系统&#xff08;NDR&#xff09;凭借出色的行业场景实践和出众的产品表现力脱颖而出&#xff0c;成功入选“202…

5、score diffusion model

DDIM中遇到的Score-based SDE这里采用表示神经网络的预测值&#xff0c;用表示。同时等价于DDPM回顾贝叶斯公式原始公式前向过程表示连乘反向过程由前向过程可知&#xff1a;所以&#xff1a;正态分布&#xff1a;重参数技巧&#xff1a;反向过程&#xff1a;优化目标&#xff…

ASP.NETCore学习资料

1.ASP.NETCore比ASP.NET更具优势的地方是什么&#xff1f; ASP.NET Core(ASP.NET Core 简介) ASP.NET Core 是一个跨平台的开源框架&#xff0c;用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET(ASP.NET 简介) ASP.NET 是一个成熟的框架&#xff0c;提…

Git学习笔记(七)——其他操作

一、自定义Git Git除了配置user.name 和user.email 还有很多可配置项。 &#xff08;1&#xff09;命令git config --global color.ui true 让Git显示颜色&#xff0c;会让命令输出看起来更醒目.Git 会适当显示不同的颜色。 $ git config --global color.ui true查看分支会有…

延迟队列docker插件

文章目录 目录 文章目录 前言 一、环境准备与使用 总结 前言 一、环境准备与使用 下载对应版本的插件 https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/releases 然后在虚拟机上随便找个文件夹 cd /home/docker 先把容器运行 然后在当前文件下 将插件拷贝…