• 一个小型公司人工费用核算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;
                    }
                }

                
            }
     

  • 相关阅读:
    瑞吉外卖 —— 11、项目优化:使用 Redis 缓存
    linux系统离线安装docker(分步法&一键法)
    Python语言第五章之字符串
    window Zookeeper 启动;
    Android解决Toast的重复点击问题也可以叫消息队列
    DNS有什么作用 43.227.220.X
    烧写最小linux失败,开机显示Wrong Ramdisk Image Format
    python开发工具以及数据类型,eval函数,运算符,系列解包赋值,逻辑运算符,位运算符,运算符优先级
    Oracle 账户被锁:the account is locked 解决方法
    【面试官说实现一个顺序表,但听到要求后我沉默了】
  • 原文地址:https://blog.csdn.net/liheao/article/details/126735613