• 一个小型公司人工费用核算winform查询开发(3)


    总结:1.datagridview的复选框可以形成事件(单击不能连续过快,形成双击事件没有反馈);2.list表可以去重,两个list可以按共同取交集;3.复选框可以归到一组中,然后循环进行判断和操作。

    经验:开发中,数据量不是特别大的,可以一次性放入内存中,然后通过linq进行各种处理,效率极高。否则每次都访问数据库,浪费资源,速度也慢。

    按钮事件代码

     private void button1_Click(object sender, EventArgs e)
            {
                //准备工作 1.确定年度;2.确定月份并将选定月份形成分布表;3.清空datagridview
                //1
                string year;
                if (radioButton2.Checked){ year = "2022";}
                else{ year = "2021"; }
                //2
                rgmonth.Clear();
                foreach (System.Windows.Forms.CheckBox checkBox in groupBox2.Controls)
                {
                    if (checkBox.Checked)
                    {
                       
                        rgmonth.Add(new rg()
                        {
                            month = checkBox.Name.ToString().Remove(0, 2)

                        });
                    }
                }
                //3
                this.dataGridView3.DataSource = null;


                //数据处理工作 1.按选择年度提取数据;2.按月份集合提取数据;3.按部门或员工选项提取数据
                //1.
                rgdata_year = (from b in rgdata where (b.year.Equals(year)) select b).ToList();
                //2.确定年度后动态获取月份数据
                 var rg_month = rgdata_year.Where(s => rgmonth.Any(c => c.month.Equals(s.month)));

                 List rgdata_month = rg_month.ToList();

                //
                 data_rg.Clear();
                 if (radioButton4.Checked) //部门
                 {
                    //临时表
                     var data = rgdata_month.Where(s => bmdata.Any(c => c.bmbm.Equals(s.bmbm)));
                       data_rg = data.ToList();
                    
                 }
                 else //员工 myrg01
                 {
                     var data = rgdata_month.Where(s => myrg01.Any(c => c.name.Equals(s.name)));
                       data_rg = data.ToList();
                  
                 }

                 this.dataGridView3.DataSource = data_rg;
                 decimal xc = 0 ;
                 decimal wxyj = 0 ;
                 decimal total = 0 ;
                 for (int i = 0; i < data_rg.Count; i++)
                 {
                     xc = xc + data_rg[i].xc;
                     wxyj = wxyj + data_rg[i].wxyj;
                     total = total + data_rg[i].total;
                 }

                 label4.Text = "应付薪酬:" + xc.ToString("N0") + "    " + "公司承担险金:" + wxyj.ToString("N0") + "    " + "人工总计:" + total.ToString("N0");
                 //label5.Text = "公司承担险金:" + wxyj.ToString("N0");
                 //label6.Text = "人工总计:" + total.ToString("N0");
       
            }

            private void checkBox3_CheckedChanged(object sender, EventArgs e)
            {

                if (checkBox3.Checked) //全选中
                {
                    foreach (System.Windows.Forms.CheckBox checkBox in groupBox2.Controls)
                    {
                        checkBox.Checked = true;
                    }

                }
                else //
                {

                    foreach (System.Windows.Forms.CheckBox checkBox in groupBox2.Controls)
                    {
                        checkBox.Checked = false;
                    }
                }

                
            }
     

  • 相关阅读:
    索引(2)
    Rust 解决循环引用
    Maven——概念、IDEA集成、Maven坐标、依赖配置、依赖传递、排除依赖、依赖范围、生命周期
    pytorch 图像数据集管理
    Go语言 错误处理
    Pdf文件签名检查
    Java Excel Poi 单元格颜色设置
    pdf添加书签的软件,分享3个实用的软件!
    一款Java开源的SpringBoot即时通讯IM 聊天系统
    ES6中 async 函数、await表达式 的基本用法
  • 原文地址:https://blog.csdn.net/liheao/article/details/126735613