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


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

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

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

     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 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);
            }

  • 相关阅读:
    UnionFind(并查集)
    KSQL DB 学习笔记1
    java的左移运算符和右移运算符
    行人重识别项目 | 基于Pytorch实现ReID行人重识别算法
    【因果推断python】41_异质干预效应1
    基于微信小程序的沁园健身房预约管理系统设计与实现-计算机毕业设计源码+LW文档
    Python:dict
    ROS从入门到精通5-3:插件库与开发+实例分析
    Java教程:学会写Starter-你就懂了SpringBoot自动配置
    第39讲:MySQL常规的索引分类
  • 原文地址:https://blog.csdn.net/liheao/article/details/126734857