一个小型公司人工费用核算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<rg>();
            //2.确定年度后动态获取月份数据
             var rg_month = rgdata_year.Where(s => rgmonth.Any(c => c.month.Equals(s.month)));

             List<rg> 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;
                }
            }

            
        }
 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT技术与企业应用结合的爱好者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值