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

下面是打开的界面(红色部分为重要代码,一句简洁的代码能做出比较复杂的操作)

 1.获取全部数据后。形成一个基础list,装入全部数据,以后对这个表进行提取数据。

   private rgdataprocess objrgdataprocess = new rgdataprocess();
        List<rg> rgdata = new List<rg>(); //全部薪酬数据 

 rgdata = objrgdataprocess.Getbm();获取数据的操作。

去重的操作见下,只留下d.bmbm, d.bmtxt完全相同的一个,其它都不要,为了展示在datagridview1中。

 var rgdata_bm = rgdata.GroupBy(d => new { d.bmbm, d.bmtxt }) //linq去重部门
                  .Select(d => d.FirstOrDefault())
                  .ToList();

去重的操作见下,只留下员工完全相同的一个,其它都不要,为了展示在datagridview2中。

var rgdata_name = rgdata.GroupBy(d => new { d.name }) //linq去重姓名
                  .Select(d => d.FirstOrDefault())
                  .ToList();

  2.这里datagridview都有复选框,就是体现联动效果 ,需要添加datagridview事件。复选dataGridView1,dataGridView2产生联动效果(dataGridView2也可以自己复选)        

 复选框变动事件:dataGridView1_CellContentClick,dataGridView2_CellContentClick

事件代码:

  private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            //动态获取部门集合
            bmdata.Clear();
            for (int i = 0; i < this.dataGridView1.Rows.Count; i++)
            {
                if (dataGridView1.Rows[i].Cells[0].EditedFormattedValue.ToString() == "True")
                    bmdata.Add(new rg()
                   {
                       bmbm = dataGridView1.Rows[i].Cells[1].EditedFormattedValue.ToString(),
                       bmtxt = dataGridView1.Rows[i].Cells[2].EditedFormattedValue.ToString(),
                   });

            }
            //动态获取部门下所有人员,这个是根据部门范围获取部门下的所有员工,bm_yg是大范围的表,根据bmdata中的部门编号,获取bm_yg的部门人员。就是对bm_yg进行筛选。
            var myrg = bm_yg.Where(s => bmdata.Any(c => c.bmbm.Equals(s.bmbm)));
            //将myrg转化为list
            List<rg> myrg00 = myrg.ToList();

            for (int i = 0; i < this.dataGridView2.Rows.Count; i++)
            {

                dataGridView2.Rows[i].Cells[0].Value = false;
                for (int ii = 0; ii < myrg00.Count; ii++)
                {
                    if (dataGridView2.Rows[i].Cells[1].EditedFormattedValue.ToString() == myrg00[ii].name.ToString())
                    {
                        dataGridView2.Rows[i].Cells[0].Value = "True";

                    }

                }


            }

            dataGridView2_CellContentClick(null, null);
         

        }

        private void dataGridView2_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            string name = "";
            int a = 0;
            textBox1.Text = "";
            myrg01.Clear();
            for (int i = 0; i < this.dataGridView2.Rows.Count; i++)
            {

                if (dataGridView2.Rows[i].Cells[0].EditedFormattedValue.ToString() == "True")
                {
                    name = name + " " + dataGridView2.Rows[i].Cells[1].EditedFormattedValue.ToString();
                    a++;
                    myrg01.Add(new rg()
                    {
                        name = dataGridView2.Rows[i].Cells[1].EditedFormattedValue.ToString()

                    });
                }

            }
            if (a > 0)
            {
                label3.Text = "人员名单(共有" + a + "人选中)";
                textBox1.Text = name;  //这个在下面的文本框列示名单详细
            }
            else
            {
                label3.Text = "人员名单";
            }
        }

3.dataGridView1和dataGridView2上面都有checkBox,所以也有事件checkBox_CheckedChanged。体现全选和全不选。

private void checkBox1_CheckedChanged(object sender, EventArgs e)
        {
            if (checkBox1.Checked == true)
            { checkBox1.Text = "全不选"; }
            else
            { checkBox1.Text = "全选"; }
   
                for (int i = 0; i < this.dataGridView1.Rows.Count; i++)
                {
                    if (checkBox1.Checked == true)
                    { dataGridView1.Rows[i].Cells["fx"].Value = true; }
                    else
                    { dataGridView1.Rows[i].Cells["fx"].Value = false; }
                }


                dataGridView1_CellContentClick(null, null);
                dataGridView2_CellContentClick(null, null);
             
            
        }

        private void checkBox2_CheckedChanged(object sender, EventArgs e)
        {
            if (checkBox2.Checked == true)
            { checkBox2.Text = "全不选"; }
            else
            { checkBox2.Text = "全选"; }


            for (int i = 0; i < this.dataGridView2.Rows.Count; i++)
            {
                if (checkBox2.Checked == true)
                { dataGridView2.Rows[i].Cells["fx1"].Value = true; }
                else
                { dataGridView2.Rows[i].Cells["fx1"].Value = false; }
            }


            dataGridView2_CellContentClick(null, null);
        }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

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

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

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

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

打赏作者

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

抵扣说明:

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

余额充值