/// <summary> /// 创建控件 /// </summary> private void CreateContorls() { List <AppraisalCoefficients> appraisalCoefficients = AppraisalCoefficients.ListAll(); // 动态控件 foreach (var ac in appraisalCoefficients) { //添加pane1 Panel panel = new Panel(); // 自定义添加Label Label label = new Label { Text = ac.AppraisalType, Width = 60, Location = new Point(0, 4) }; // 添加文本框 TextBox textBox = new TextBox { Location = new Point(63, 0), //坐标 Width = 120, Height = 26, //设置一个name加id Name = "txtAppraisalType_" + ac.Id }; panel.Controls.Add(label); panel.Controls.Add(textBox); flp.Controls.Add(panel); } }
private void SetCol() { List <AppraisalCoefficients> appraisalCoefficients = AppraisalCoefficients.ListAll(); List <DataGridViewTextBoxColumn> dataGridViewTextBoxColumns = new List <DataGridViewTextBoxColumn>(); foreach (var appraisalCoefficient in appraisalCoefficients) { dataGridViewTextBoxColumns.Add(new DataGridViewTextBoxColumn { HeaderText = appraisalCoefficient.AppraisalType, Name = "AppraisalType" + appraisalCoefficient.Id.ToString(), DataPropertyName = "AppraisalType" + appraisalCoefficient.Id.ToString(), ReadOnly = true, Width = 88 }); dataGridViewTextBoxColumns.Add(new DataGridViewTextBoxColumn { HeaderText = "系数", Name = "AppRaisalCoefficient" + appraisalCoefficient.Id.ToString(), DataPropertyName = "AppRaisalCoefficient" + appraisalCoefficient.Id.ToString(), ReadOnly = true, Visible = false, Width = 88 }); dataGridViewTextBoxColumns.Add(new DataGridViewTextBoxColumn { HeaderText = "计算方式", Name = "CalculationMethod" + appraisalCoefficient.Id.ToString(), DataPropertyName = "CalculationMethod" + appraisalCoefficient.Id.ToString(), ReadOnly = true, Visible = false, Width = 88 }); } dgvUserAppraisal.Columns.AddRange(dataGridViewTextBoxColumns.ToArray()); dgvUserAppraisal.Columns.Add(new DataGridViewTextBoxColumn { HeaderText = "考核年度", Name = "AssessmentYear", DataPropertyName = "AssessmentYear", ReadOnly = true, Width = 166 }); dgvUserAppraisal.Columns.Add(new DataGridViewTextBoxColumn { HeaderText = "实发年终奖", Name = "YearBonus", DataPropertyName = "YearBonus", ReadOnly = true, Width = 166 }); }
private void bindDgvUserappraisal() { DataTable dtUser = UserAppraisalBases.GetDtJoinAppraisal(); // 获取系数表集合 List <AppraisalCoefficients> appraisalCoefficients = AppraisalCoefficients.ListAll(); // 填充 foreach (var item in appraisalCoefficients) { //添加系数名 dtUser.Columns.Add(new DataColumn { ColumnName = "AppraisalType" + item.Id }); // 添加系数值 dtUser.Columns.Add(new DataColumn { ColumnName = "AppRaisalCoefficient" + item.Id }); // 添加计算方式 dtUser.Columns.Add(new DataColumn { ColumnName = "CalculationMethod" + item.Id }); } // 考核年度 dtUser.Columns.Add(new DataColumn { ColumnName = "AssessmentYear" }); // 添加实发年终奖 dtUser.Columns.Add(new DataColumn { ColumnName = "YearBonus" }); // dtUser 填充数据 List <UserAppraisalCoefficients> userAppraisalCoefficients = UserAppraisalCoefficients.ListAll(); for (int i = 0; i < dtUser.Rows.Count; i++) { var uacFilter = userAppraisalCoefficients.FindAll (m => m.UserId == (int)dtUser.Rows[i]["Id"] && m.AssessmentYear == cbxYear.Text); // 系数计算的数组,存放每个考核类型的总系数 double[] yearbonusArray = new double[uacFilter.Count]; for (int j = 0; j < uacFilter.Count; j++) { // 获取AppraisalType对应的dtUser的ColumnName的值 // 获取考核次数 string appraisalTypeKey = "AppraisalType" + uacFilter[j].CoefficientId; int appraisalTypeCountValue = uacFilter[j].Count; // 获取考核系数 string appraisalCoefficientKey = "AppRaisalCoefficient" + uacFilter[j].CoefficientId; int appraisalCoefficientValue = Convert.ToInt32(uacFilter[j].AppraisalCoefficient); //获取计算方式 string calculationMethodKey = "CalculationMethod" + uacFilter[j].CoefficientId; int calculationMethodValue = Convert.ToInt32(uacFilter[j].CalculationMethod); //绑定 dtUser值 dtUser.Rows[i][appraisalTypeKey] = appraisalTypeCountValue; dtUser.Rows[i][appraisalCoefficientKey] = appraisalCoefficientValue; dtUser.Rows[i][calculationMethodKey] = calculationMethodValue; yearbonusArray[j] = appraisalCoefficientValue * appraisalTypeCountValue * calculationMethodValue; } dtUser.Rows[i]["AssessmentYear"] = cbxYear.Text; // 结算实发年终奖 double yearbonusAll = 0; for (int j = 0; j < yearbonusArray.Length; j++) { yearbonusAll += yearbonusArray[j]; } // 计算实发年终奖 double yearBonus = (1 + yearbonusAll) * Convert.ToDouble(dtUser.Rows[i]["AppraisalBase"]); // 加入年终奖扣成负数则为0 dtUser.Rows[i]["YearBonus"] = yearBonus < 0 ? 0 : yearBonus; } dgvUserAppraisal.AutoGenerateColumns = false; dgvUserAppraisal.DataSource = dtUser; }