예제 #1
0
        /// <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);
        }
예제 #2
0
 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;
     }
 }
예제 #3
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);
                            }
                        }
                    }
                }
            }
        }
예제 #4
0
        //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();
            }
        }
예제 #5
0
        /// <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);
            }
        }
예제 #6
0
        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();
        }