/// <summary> /// 定义的查询方法,以供窗体间委托调用 /// </summary> /// <param name="sql"></param> /// <param name="dgvName"></param> private void ViewQuery(string sql, string dgvName) { RawDataBLL rawDataBLL = new RawDataBLL(); this.dgv_DbQuery.AutoGenerateColumns = true; DataGridViewColumnEditor dgvCE = new DataGridViewColumnEditor(); this.dgv_DbQuery.Name = dgvName; // "dgvView"; this.dgv_DbQuery.ReadOnly = true; if (dgvName == "dgvView") { this.dgv_DbQuery.ReadOnly = true; //将List数据转变成DataTable类型 dt = DataSourceToDataTable.GetListToDataTable <AverageValuesTargetEntity> (rawDataBLL.GetAvg_List(sql)); //this.dgv_DbQuery.DataSource = rawDataBLL.GetAvg_List(sql); this.dgv_DbQuery.DataSource = dt; } if (dgvName == "dgvTarget") { this.dgv_DbQuery.ReadOnly = false; dt = DataSourceToDataTable.GetListToDataTable <TargetEntity>(rawDataBLL.GetList(sql)); this.dgv_DbQuery.DataSource = dt;// rawDataBLL.GetList(sql); } dgvCE.ColumHeaderEdit(this.dgv_DbQuery, this.dgv_DbQuery.Name); }
private void treeViewGrad_AfterCheck(object sender, TreeViewEventArgs e) { lstTgtSelected.Clear(); lstBlkSelected.Clear(); lstBsnSelected.Clear(); if (e.Action != TreeViewAction.Unknown) { tvncs.Set(e, out Counter, out lstTgtName); } if (Counter != 0) { foreach (string var in lstTgtName) { tgtSn++; for (int i = 0; i < listAvgTgtEnty.Count; i++) { if (var == listAvgTgtEnty[i].tgt_Att_Name) { listAvgTgtEnty[i].tgt_Att_Sn = tgtSn; lstTgtSelected.Add(listAvgTgtEnty[i]); break; } } } lstBlkSelected = tlt.ToBlock(lstTgtSelected, lstBlkSelected); lstBsnSelected = tlt.ToBasin(lstTgtSelected, lstBsnSelected); dgvView_Target.DataSource = DataSourceToDataTable.GetListToDataTable(lstTgtSelected); dgvView_Basin.DataSource = DataSourceToDataTable.GetListToDataTable(lstBsnSelected); dgvView_Block.DataSource = DataSourceToDataTable.GetListToDataTable(lstBlkSelected); tgtSn = 0; } }
private void GradingFrm_Load(object sender, EventArgs e) { splitContDataZone.SplitterDistance = splitContDataZone.Height - 60; this.btnCancel.Height = 35; this.btnNext.Height = 35; splitCtnerGraFrm.SplitterDistance = 150; listAvgTgtEnty = rawDataBLL.GetAvg_List(sql); dt = DataSourceToDataTable.GetListToDataTable(listAvgTgtEnty); List <string> list_BsnName = new List <string>(); List <string> list_TgtName = new List <string>(); TreeNode tN = new TreeNode(); string otherBsn = ""; //将所有数据存在dt表内,后面的操作就是从该表中来读取数据 foreach (AverageValuesTargetEntity val in listAvgTgtEnty) { //下面的判断语句是为了避免有重复值出现,其等同于下面的Linq语句: //list_BsnName.Where((x,i) => list_BsnName.FindIndex(z => z.bsn_Att_Name == x.bsn_Att_Name) == i); //list_BsnName.Where((x,i) => list_BsnName.FindIndex(z =>z == x) == i); if (val.bsn_Att_Name.Trim() == "") { otherBsn = "其它"; } if (!list_BsnName.Contains(val.bsn_Att_Name) && !val.bsn_Att_Name.Equals("")) { list_BsnName.Add(val.bsn_Att_Name); } //list_TgtName不用去判断,因为这个值在数据库中就不会有相重的 list_TgtName.Add(val.tgt_Att_Name); } if (otherBsn.Equals("其它") && !list_BsnName.Exists(x => x == "其它")) { list_BsnName.Add("其它"); } foreach (TreeNode var in treeViewGrad.Nodes) { if (var.Name == "para_Bsn") { foreach (string str in list_BsnName) { tN = var.Nodes.Add(str); foreach (AverageValuesTargetEntity avte in listAvgTgtEnty) { if (avte.bsn_Att_Name.Equals(str)) { tN.Nodes.Add(avte.tgt_Att_Name); } if (avte.bsn_Att_Name.Equals("") && str.Equals("其它")) { tN.Nodes.Add(avte.tgt_Att_Name); } } } } } }
//private void tlStripBtn_Refresh_Click(object sender, EventArgs e) //{ // dgv_DbQuery.DataSource = dt; // dgv_DbQuery.Refresh(); //} //int sn; private void tlStripBtn_BlankRowAdd_Click(object sender, EventArgs e) { dgv_DbQuery.AllowUserToAddRows = false; dgv_DbQuery.ReadOnly = false; ////DataTable dt = DataSourceToDataTable.GetListToDataTable(new List<TargetEntity>()); ////dgv_DbQuery.DataSource = dt; ////DataGridViewColumnEditor dgvce = new DataGridViewColumnEditor(); ////dgvce.ColumHeaderEdit(dgv_DbQuery, "dgvTarget"); ////dt = (DataTable)this.dgv_DbQuery.DataSource; ////DataRow dR = dt.NewRow(); ////dt.Rows.Add(dR); ////dgv_DbQuery.Refresh(); DataRow dR = null; if (dgv_DbQuery.DataSource == null) { //sn = 0; //System.Diagnostics.Stopwatch watch = new System.Diagnostics.Stopwatch(); //watch.Start(); DataTable dt = DataSourceToDataTable.GetListToDataTable(new List <TargetEntity>()); //watch.Stop(); //TimeSpan ts = watch.Elapsed; dgv_DbQuery.DataSource = dt; DataGridViewColumnEditor dgvce = new DataGridViewColumnEditor(); //watch.Start(); dgvce.ColumHeaderEdit(dgv_DbQuery, "dgvTarget"); //watch.Stop(); //ts = watch.Elapsed; //rowIndex = dgv_DbQuery.NewRowIndex; //dgv_DbQuery.Rows[rowIndex].Cells[0].Value = (++sn).ToString(); dt = (DataTable)this.dgv_DbQuery.DataSource; //DataRow dR = dt.NewRow(); dR = dt.NewRow(); dt.Rows.Add(dR); dgv_DbQuery.Refresh(); } else { dt = (DataTable)this.dgv_DbQuery.DataSource; //DataRow dR = dt.NewRow(); dR = dt.NewRow(); // int rowscount = dt.Rows.Count; //dR.Rows.InsertAt(row, rowscount); dt.Rows.Add(dR); dgv_DbQuery.Refresh(); } }
/// <summary> /// 对计算结果进行排序 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btn_Sort_Click(object sender, EventArgs e) { double[] arr_Scores = null; string[] arr_TgtName = null; //SortedBlocksFrm sBf = new SortedBlocksFrm(); int counterFlag = 0; //***********************************************************// PublicValues.GeoParas = ""; PublicValues.EngParas = ""; PublicValues.EcoParas = ""; PublicValues.ArrGeoParas = new string[lstBx_Selected_GeoPara.Items.Count]; //***********************************************************// foreach (string str in lstBx_Selected_GeoPara.Items) { PublicValues.ArrGeoParas[counterFlag] = str; counterFlag++; if (counterFlag != lstBx_Selected_GeoPara.Items.Count) { PublicValues.GeoParas += str + ","; } else { PublicValues.GeoParas += str + ";"; } } //将所有参数对应的权重值赋值给对应的参数,并形成一个字典变量,以供后面绘图时调用 //此目的是为了绘制柱状图时,所用参数对应 相应的权重值 PublicValues.DicGeoP_W = new Dictionary <string, double>(); PublicValues.DicEngP_W = new Dictionary <string, double>(); PublicValues.DicEcoP_W = new Dictionary <string, double>(); for (int i = 0; i < geoParasAll.Length; i++) { PublicValues.DicGeoP_W.Add(geoParasAll[i], (double)PublicValues.ArrGeoWgt[i]); if (i < engParasAll.Length) { PublicValues.DicEngP_W.Add(engParasAll[i], (double)PublicValues.ArrEngWgt[i]); } if (i < ecoParasAll.Length) { PublicValues.DicEcoP_W.Add(ecoParasAll[i], (double)PublicValues.ArrEcoWgt[i]); } } counterFlag = 0; PublicValues.ArrEngParas = new string[lstBx_Selected_EngPara.Items.Count]; foreach (string str in lstBx_Selected_EngPara.Items) { PublicValues.ArrEngParas[counterFlag] = str; counterFlag++; if (counterFlag != lstBx_Selected_EngPara.Items.Count) { PublicValues.EngParas += str + ","; } else { PublicValues.EngParas += str + ";"; } } counterFlag = 0; PublicValues.ArrEcoParas = new string[lstBx_Selected_EcoPara.Items.Count]; foreach (string str in lstBx_Selected_EcoPara.Items) { PublicValues.ArrEcoParas[counterFlag] = str; counterFlag++; if (counterFlag != lstBx_Selected_EcoPara.Items.Count) { PublicValues.EcoParas += str + ","; } else { PublicValues.EcoParas += str + ";"; } } //***********************************************************// if (chkFlag) { List <SortedBlocksParas> lst_SBP = BlockGrade(lst_Blk); int counter = lst_SBP.Count; arr_Scores = new double[counter]; arr_TgtName = new string[counter]; lst_SBP.Sort((x, y) => x.para_TotalScores.CompareTo(y.para_TotalScores)); foreach (SortedBlocksParas sBp in lst_SBP) { sBp.para_Rank = counter; counter--; } lst_SBP.Sort((x, y) => x.para_Rank.CompareTo(y.para_Rank)); arr_Scores = lst_SBP.Select(x => x.para_TotalScores).ToArray(); arr_TgtName = lst_SBP.Select(x => x.para_Tgt).ToArray(); SortedBlocksFrm sbf = SortedBlocksFrm.CreateInstance(arr_Scores, arr_TgtName); sbf.dgv_Blk_Sorted.DataSource = DataSourceToDataTable.GetListToDataTable(lst_SBP); sbf.Show(); //btn_GenerateReport.Enabled = true; } else { MessageBox.Show("尚未进行参数矩阵的检验计算操作,所有参数的权重值为 0 .", "信息", MessageBoxButtons.OK, MessageBoxIcon.Information); } }
private void ToolStripMenuItem_Sort_Click(object sender, EventArgs e) { //double[,] testarr = new double [,]{ { 1, 2, 3, 4, 5, 6 }, { 2, 3, 4, 5, 6, 7 },{3,4,5,6,7,8 },{4,5,6,7,8,9 }}; List <double> lst_MaxVal = new List <double>(); List <double> lst_MinVal = new List <double>(); //定义正理想解的距离值列表 List <double> lst_DistPIS = new List <double>(); //定义负理想解的距离值列表 List <double> lst_DistNIS = new List <double>(); //定义用于排序的最终值的列表 List <double> lst_Ci = new List <double>(); //定义理想值列表,用于排序 List <IdealSolutionByTopsisEntity> lst_ISBTE = new List <IdealSolutionByTopsisEntity>(); double maxVal = 0, minVal = 0; TopsisDecisionMatrixOperation tdmo = new TopsisDecisionMatrixOperation(); //double[,] arr = new double[dgv_DecisionMatrix.RowCount, dgv_DecisionMatrix.ColumnCount - 2]; double[,] arr_paraValNormalized = tdmo.ToNormalize(DataSourceToDataTable.GetDgvToArray(dgv_DecisionMatrix, 0, 2)); //double[,] arr = tdmo.ToNormalize(testarr); double[,] arr_paraValByWgt = new double[arr_paraValNormalized.GetLength(0), arr_paraValNormalized.GetLength(1)]; int counter = 0; for (int j = 0; j < arr_paraValNormalized.GetLength(1); j++) { //arrColumnMaxVal[j] = arr[] //minVal[j, 0] = arr_paraValByWgt[i, j]; for (int i = 0; i < arr_paraValNormalized.GetLength(0); i++) { //minVal = arr_paraValByWgt[i, j] = arr_paraValNormalized[i, j] * lst_paraWgt[j]; if (i == 0) { minVal = arr_paraValByWgt[i, j]; } if (minVal > arr_paraValByWgt[i, j]) { minVal = arr_paraValByWgt[i, j]; } if (arr_paraValByWgt[i, j] > maxVal) { maxVal = arr_paraValByWgt[i, j]; } } lst_MaxVal.Add(maxVal); maxVal = 0; lst_MinVal.Add(minVal); minVal = 0; } lst_DistPIS = tdmo.ToGetDistToPIS(arr_paraValByWgt, lst_MaxVal); lst_DistNIS = tdmo.ToGetDistToNIS(arr_paraValByWgt, lst_MinVal); string[] arr_TgtName = new string[lst_paraTgt.Count]; lst_paraTgt.CopyTo(arr_TgtName, 0); for (int i = 0; i < lst_DistNIS.Count; i++) { lst_ISBTE.Add(new IdealSolutionByTopsisEntity { para_Tgt = arr_TgtName[i], para_PostiveDist = lst_DistPIS[i], para_NegativeDist = lst_DistNIS[i], para_Ci = lst_DistNIS[i] / (lst_DistNIS[i] + lst_DistPIS[i]) }); } lst_ISBTE.Sort((x, y) => x.para_Ci.CompareTo(y.para_Ci)); counter = lst_ISBTE.Count; foreach (IdealSolutionByTopsisEntity var in lst_ISBTE) { var.para_Rank = counter; counter--; } lst_ISBTE.Sort((x, y) => x.para_Rank.CompareTo(y.para_Rank)); double [] arr_Ci = lst_ISBTE.Select(x => x.para_Ci).ToArray(); string [] arr_Tgt = lst_ISBTE.Select(x => x.para_Tgt).ToArray(); ResultSortedByTopsisFrm rsbtf = ResultSortedByTopsisFrm.CreateInstance(lst_ISBTE, arr_Ci, arr_Tgt, strDgvName); rsbtf.dgv_SortedByTopsis.DataSource = lst_ISBTE; rsbtf.Show(); }