zoukankan      html  css  js  c++  java
  • ZC公司员工评分系统——后台查询合成DataTable

     

        因为此系统中的评分指标是动态设置的,所以后台对每个评分指标查询结果显示的过程中需要对评分指标和被评人信息进行动态合成datatable,然后显示。

        后台查询界面:

       

            以下是核心代码:

    #region 合成datatable
            DataTable dtEvaluater = new DataTable();//将被评分人datatable当做源datatable
    
            DataTable dtMainIndex = new DataTable();//存放全部使用的大类指标
            dtMainIndex = resultQueryManager.SelectAllMain("1");   //选出全部大类指标
            dtEvaluater = resultQueryManager.SelectByDepartment(departmentName);//按部门名称选出全部被评分人
            if (dtEvaluater.Rows.Count == 0) //没有被评人数据
            {
                Label1.Visible = true;
                Label1.Text = "此部门下没有测评人。";
                return;
            }
    
            //选出全部大类指标,当做列添加到dtEvaluater源datatable中,进行datatable的拼接
            for (int k = 0; k < dtMainIndex.Rows.Count; k++)
            {
                string dtColumnName = dtMainIndex.Rows[k]["MainContent"].ToString();
                //dtEvaluater.Columns.Add(dtColumnName);//dtEvaluater中添加大类列,并用大类内容作为列名
                dtEvaluater.Columns.Add(dtColumnName, typeof(System.String));//dtEvaluater中添加大类列,并用大类内容作为列名
            }
            dtEvaluater.Columns.Add("总分", typeof(System.String)); //添加总分列
            //设置变量,用于存放计算后的总分
    
            //循环添加每一个大类的分数
            for (int i = 0; i < dtEvaluater.Rows.Count; i++)
            {
                double strSum = 0;
                //按照被评分人选出全部大指标分数,并添加上,合成一个datatable
                int EvaluaterID = System.Int32.Parse(dtEvaluater.Rows[i]["EvaluaterID"].ToString()); //得到dtEvaluater中被评人ID
                for (int j = 0; j < dtMainIndex.Rows.Count; j++)
                {
                    int MainIndexID = System.Int32.Parse(dtMainIndex.Rows[j]["MainIndexID"].ToString());//得到大类指标ID
                    //根据实验课指标大类Id,课程Id计算此课程此大类的分数
                    DataTable dtScore = resultQueryManager.AverageMainIndex(semester, year, MainIndexID, EvaluaterID);//一门课程一个大类指标的分数
                    string mainContent = dtMainIndex.Rows[j]["MainContent"].ToString();     //选出大类Id对应的大类名称
                    if (dtScore.Rows.Count != 0) //存在分数
                    {
                        if (dtScore.Rows[0][0].ToString() == "") //此大类指标下没有分数值,此大类指标没有参加测评
                        {
                            dtEvaluater.Rows[i][mainContent] = "";
                        }
                        else
                        {
                            double dScore = Convert.ToDouble(dtScore.Rows[0][0].ToString());
                            //Math.Round(dScore,2);//按照四舍五入的国际标准
                            dtEvaluater.Rows[i][mainContent] = Math.Round(dScore, 2);//将分数加入到dt相对应的大类下 (转换成两位小数)
                            strSum = strSum + Math.Round(dScore, 2);
                            //dtEvaluater.Rows[i][mainContent] = dtScore.Rows[0][0].ToString(); //将分数加入到dt相对应的大类下 (没有转换成两位小数)
                        }
                    }
                    else //不存在分数
                    {
                        dtEvaluater.Rows[i][mainContent] = "0";
                    }
                    dtEvaluater.Rows[i]["总分"] = strSum;//填充总分单元格
                }
            }
            #endregion
            dtEvaluater.Columns.Remove("EvaluaterID");
            dtEvaluater.Columns.Remove("IsUsed");
            dtEvaluater.Columns["EvaluaterName"].ColumnName = "姓名";
            dtEvaluater.Columns["EvaluaterDepartment"].ColumnName = "部门";
            dtEvaluater.Columns["EvaluaterPosition"].ColumnName = "职务";
            gvResult.DataSource = dtEvaluater;
            gvResult.DataBind();
    


     

  • 相关阅读:
    《JS实现复制内容到剪贴板功能,可兼容所有PC浏览器,不兼容手机端》
    《Web开发中块级元素与行内元素的区分》
    《Web开发中让盒子居中的几种方法》
    《Javascript、jQuery获取各种屏幕的宽度和高度方法》
    《Web开发过滤Javascript、HTML的方法》
    《移动端浏览器Touch事件判断手指滑动方向方法》
    《C#微信开发系列(4)-接收 / 返回文本消息》
    《C#微信开发系列(3)-获取接口调用凭据》
    django rest-framework
    git
  • 原文地址:https://www.cnblogs.com/CharmingDang/p/9663987.html
Copyright © 2011-2022 走看看