Exemple #1
0
        // Calculate entiry piece score and send NG signal when piece fail
        public void CalcEntirePieceResult()
        {
            // get current using unit
            NowUnit ucd = _units.Find(x => x.ComponentName == "Flaw Map CD");

            int score = 0;
            double top = Convert.ToDouble(_cuts.Last()) - JobHelper.PxPInfo.Height;
            double bottom = Convert.ToDouble(_cuts.Last());
            string rowFilter = String.Format("MD > {0} AND MD < {1} AND CD > {2}", top, bottom, _tmpOffset);
            DataRow[] flawRows = _dtbFlaws.Select(rowFilter);

            ConfigHelper ch = new ConfigHelper();
            string gradeConfigFile = ch.GetDefaultGradeConfigName();
            DataTable gradeColumn = ch.GetDataTableOfdgvColumns(gradeConfigFile);
            DataTable gradeRow = ch.GetDataTableOfdgvRows(gradeConfigFile);
            string roiMode = ch.GetGradeNoRoiMode(gradeConfigFile);
            bool showScore = ch.IsGradePointEnable(gradeConfigFile);
            double limitScore = ch.GetPassFailScore(gradeConfigFile);

            if (roiMode == "Symmetrical" && showScore)
            {
                bool pieceResult;
                if (flawRows.Length > 0)
                {
                    foreach (DataRow drCol in gradeColumn.Rows)
                    {
                        foreach (DataRow drRow in gradeRow.Rows)
                        {
                            string rangeName = String.Format("{0}{1}", drCol["Name"], drRow["Name"]);

                            int subPieceScore = 0;
                            //string subPieceFilter = String.Format("(CD >= {0} AND CD <= {1}) AND (MD > {2} AND MD < {3})", drCol["Start"], drCol["End"], (Convert.ToDouble(drRow["Start"]) + top), (Convert.ToDouble(drRow["End"]) + top));
                            string subPieceFilter = String.Format("(CD >= {0} AND CD <= {1}) AND (MD > {2} AND MD < {3})", Convert.ToDouble(drCol["Start"]) / ucd.Conversion, Convert.ToDouble(drCol["End"]) / ucd.Conversion, (Convert.ToDouble(drRow["Start"]) / ucd.Conversion + top), (Convert.ToDouble(drRow["End"]) / ucd.Conversion + top));
                            DataRow[] subFlawRows = _dtbFlaws.Select(subPieceFilter);
                            foreach (DataRow dr in subFlawRows)
                            {
                                string pointFilter = String.Format("SubpieceName = 'ROI-{0}' AND ClassName = '{1}'", rangeName, dr["FlawClass"]);
                                subPieceScore += Convert.ToInt32(_dtbPoints.Select(pointFilter).First()["Score"]);
                            }

                            score += subPieceScore;
                        }
                    }
                    if (score >= limitScore)
                    {
                        pieceResult = false;
                    }
                    else
                    {
                        pieceResult = true;
                    }
                }
                else
                {
                    pieceResult = true;
                }
                _doffResult.Add(pieceResult);

                // Fire when doff is fail
                if (!JobHelper.IsOnpeHistory)
                {
                    if (pieceResult == false)
                    {
                        _fire.FireEvent(0, 0, 0);
                    }
                    else
                    {
                        _fire.FireEvent(1, 0, 0);
                    }
                }
            }
            else
            {
                _doffResult.Add(true);
            }

            // Calc flaw number of this job
            foreach (DataRow dr in flawRows)
            {
                string name = dr["FlawClass"].ToString();
                if (!_jobDoffNum.ContainsKey(name))
                {
                    _jobDoffNum.Add(name, 1);
                }
                else
                {
                    _jobDoffNum[name]++;
                }
            }
        }
Exemple #2
0
        // Draw sub piece range and annotation
        private void DrawSubPiece()
        {
            // get current using unit
            NowUnit ucd = _units.Find(x => x.ComponentName == "Flaw Map CD");

            _totalScore = 0;
            DataRow[] flawRows = _dtbFlaws.Select(_dtbFlaws.DefaultView.RowFilter);

            ConfigHelper ch = new ConfigHelper();
            string gradeConfigFile = ch.GetDefaultGradeConfigName();
            DataTable gradeColumn = ch.GetDataTableOfdgvColumns(gradeConfigFile);
            DataTable gradeRow = ch.GetDataTableOfdgvRows(gradeConfigFile);
            string roiMode = ch.GetGradeNoRoiMode(gradeConfigFile);
            bool showScore = ch.IsGradePointEnable(gradeConfigFile);
            bool showGrade = ch.IsGradeMarksEnable(gradeConfigFile);

            if (roiMode == "Symmetrical")
            {
                foreach (DataRow drCol in gradeColumn.Rows)
                {
                    foreach (DataRow drRow in gradeRow.Rows)
                    {
                        // Add rangearea
                        string rangeName = String.Format("{0}{1}", drCol["Name"], drRow["Name"]);
                        Series range = new Series(rangeName, ViewType.RangeArea);
                        range.ShowInLegend = false;
                        range.CrosshairEnabled = DevExpress.Utils.DefaultBoolean.False;
                        range.ArgumentScaleType = ScaleType.Numerical;

                        range.Points.Add(new SeriesPoint(drCol["Start"], drRow["Start"], drRow["End"]));
                        range.Points.Add(new SeriesPoint(drCol["End"], drRow["Start"], drRow["End"]));

                        RangeAreaSeriesView view = (RangeAreaSeriesView)range.View;
                        view.Color = Color.Red;
                        view.Transparency = 230;
                        view.Marker1.Visible = false;
                        view.Marker2.Visible = false;
                        view.Border1.Color = Color.Transparent;
                        view.Border2.Color = Color.Transparent;

                        chartControl.Series.Add(range);

                        int subPieceScore = 0;
                        string subPieceGrade = "F";
                        if (showScore)
                        {
                            string subPieceFilter = String.Format("(CD >= {0} AND CD <= {1}) AND (MD > {2} AND MD < {3})", Convert.ToDouble(drCol["Start"]) / ucd.Conversion, Convert.ToDouble(drCol["End"]) / ucd.Conversion, (Convert.ToDouble(drRow["Start"]) / ucd.Conversion + _topOfPart), (Convert.ToDouble(drRow["End"]) / ucd.Conversion + _topOfPart));
                            DataRow[] subFlawRows = _dtbFlaws.Select(subPieceFilter);
                            foreach (DataRow dr in subFlawRows)
                            {
                                string pointFilter = String.Format("SubpieceName = 'ROI-{0}' AND ClassName = '{1}'", rangeName, dr["FlawClass"]);
                                subPieceScore += Convert.ToInt32(_dtbPoints.Select(pointFilter).First()["Score"]);
                            }
                        }
                        if (showGrade)
                        {
                            string gradeFilter = String.Format("SubpieceName = 'ROI-{0}' AND Score >= {1}", rangeName, subPieceScore);
                            DataRow[] r = _dtbGrades.Select(gradeFilter);
                            if (_dtbGrades.Select(gradeFilter).Length > 0)
                            {
                                subPieceGrade = _dtbGrades.Select(gradeFilter).First()["GradeName"].ToString();
                            }
                        }

                        // Add annotation
                        TextAnnotation annotation = new TextAnnotation();
                        PaneAnchorPoint paPoint = new PaneAnchorPoint();
                        RelativePosition relPosition = new RelativePosition();

                        annotation.LabelMode = true;
                        annotation.BackColor = System.Drawing.Color.Transparent;
                        annotation.Border.Visible = false;
                        annotation.ConnectorStyle = AnnotationConnectorStyle.None;
                        annotation.Font = new System.Drawing.Font("Tahoma", 8F, FontStyle.Bold);
                        annotation.TextColor = Color.Blue;
                        annotation.Name = rangeName;
                        string annotationScore = "";
                        if (showScore)
                        {
                            annotationScore = String.Format(" - {0}", subPieceScore);
                        }
                        string annotationGrade = "";
                        if (showGrade)
                        {
                            annotationGrade = String.Format("({0})", subPieceGrade);
                        }
                        annotation.Text = String.Format("{0}{1}{2}", rangeName, annotationScore, annotationGrade);
                        string annotationX = Convert.ToString(Convert.ToDouble(drCol["Start"]) + (Convert.ToDouble(drCol["End"]) - Convert.ToDouble(drCol["Start"])) * 0.3);
                        string annotationY = Convert.ToString(Convert.ToDouble(drRow["End"]) - (Convert.ToDouble(drRow["End"]) - Convert.ToDouble(drRow["Start"])) * 0.1);
                        paPoint.AxisXCoordinate.AxisValueSerializable = annotationX;
                        paPoint.AxisYCoordinate.AxisValueSerializable = annotationY;
                        annotation.AnchorPoint = paPoint;
                        relPosition.Angle = 0;
                        relPosition.ConnectorLength = 0;
                        annotation.ShapePosition = relPosition;
                        chartControl.AnnotationRepository.AddRange(new Annotation[] { annotation });

                        _totalScore += subPieceScore;
                    }
                }
            }
            DrawDummyPoint();

            // Calculate flaw quantity
            Dictionary<string, int> flawLegendRefDic = new Dictionary<string, int>();
            int i = 0;
            foreach (DataGridViewRow dgvr in dgvFlawLegendDetial.Rows)
            {
                dgvr.Cells["PieceDoffNum"].Value = "0";
                flawLegendRefDic.Add(dgvr.Cells["Name"].Value.ToString(), i);
                i++;
            }
            if (flawRows.Length > 0)
            {
                foreach (DataRow dr in flawRows)
                {
                    string flawName = dr["FlawClass"].ToString();
                    int rowPosition = flawLegendRefDic[flawName];
                    int flawQuantity = Convert.ToInt32(dgvFlawLegendDetial.Rows[rowPosition].Cells["PieceDoffNum"].Value) + 1;
                    dgvFlawLegendDetial.Rows[rowPosition].Cells["PieceDoffNum"].Value = flawQuantity.ToString();
                }
            }
        }
Exemple #3
0
        private void cmbConfig_DropDownClosed(object sender, EventArgs e)
        {
            ConfigHelper ch = new ConfigHelper();

            //ROI Settings
            //----------------------------------------------------------------------------------------//

            // Set Roi Mode
            RadioButton[] rdos = { rdoNoRoi, rdoSymmetrical };
            foreach (RadioButton rdo in rdos)
            {
                string roiMode = ch.GetGradeNoRoiMode(cmbConfig.SelectedItem.ToString());
                if (rdo.Text == roiMode)
                {
                    rdo.Checked = true;
                }
                else
                {
                    rdo.Checked = false;
                }
            }

            // Set TextBox of Columns, Rows
            txtColumns.Text = ch.GetGradeColumns(cmbConfig.SelectedItem.ToString()).ToString();
            txtRows.Text = ch.GetGradeRows(cmbConfig.SelectedItem.ToString()).ToString();

            // Reload DataTable of dgvColumns and dgvRows
            _dtbColumns.Clear();
            DataTable tmpColumns = ch.GetDataTableOfdgvColumns(cmbConfig.SelectedItem.ToString().Trim());
            foreach (DataRow dr in tmpColumns.Rows)
            {
                DataRow d = _dtbColumns.NewRow();
                d["Name"] = dr["Name"];
                d["Start"] = dr["Start"];
                d["End"] = dr["End"];
                _dtbColumns.Rows.Add(d);
            }
            tmpColumns.Dispose();
            _dtbRows.Clear();
            DataTable tmpRows = ch.GetDataTableOfdgvRows(cmbConfig.SelectedItem.ToString().Trim());
            foreach (DataRow dr in tmpRows.Rows)
            {
                DataRow d = _dtbRows.NewRow();
                d["Name"] = dr["Name"];
                d["Start"] = dr["Start"];
                d["End"] = dr["End"];
                _dtbRows.Rows.Add(d);
            }
            tmpRows.Dispose();

            // Grade Settings
            //----------------------------------------------------------------------------------------//

            // Initialize Point is enable.
            chkEnablePonit.Checked = ch.IsGradePointEnable(cmbConfig.SelectedItem.ToString().Trim());

            // Initialize SubPiece (cmbSubPoints)
            _pointsSubpieceNames = ch.GetSubPointsNameList(cmbConfig.SelectedItem.ToString().Trim());
            cmbSubPoints.DataSource = _pointsSubpieceNames;

            // Set dgvPoint datasource
            _dtbPoints.Clear();
            DataTable tmpPoints = ch.GetDataTabledgvPoints(cmbConfig.SelectedItem.ToString().Trim());
            foreach (DataRow dr in tmpPoints.Rows)
            {
                DataRow d = _dtbPoints.NewRow();
                d["SubpieceName"] = dr["SubpieceName"];
                d["ClassName"] = dr["ClassName"];
                d["Score"] = dr["Score"];
                _dtbPoints.Rows.Add(d);
            }
            DataView dvPoints = _dtbPoints.DefaultView;
            dvPoints.RowFilter = String.Format("SubpieceName='{0}'", cmbSubPoints.SelectedItem.ToString().Trim());
            tmpPoints.Dispose();

            // Initialize grade is enable (marks)
            chkEnableGrade.Checked = ch.IsGradeMarksEnable(cmbConfig.SelectedItem.ToString().Trim());

            // Initialize SubPiece (cmbSubPoints)
            cmbSubMarks.DataSource = ch.GetSubMarksNameList(cmbConfig.SelectedItem.ToString().Trim());

            // Set dgvGrade datasource
            _dtbGrades.Clear();
            DataTable tmpGrades = ch.GetDataTabledgvGrade(cmbConfig.SelectedItem.ToString().Trim());
            foreach (DataRow dr in tmpGrades.Rows)
            {
                DataRow d = _dtbGrades.NewRow();
                d["SubpieceName"] = dr["SubpieceName"];
                d["GradeName"] = dr["GradeName"];
                d["Score"] = dr["Score"];
                _dtbGrades.Rows.Add(d);
            }
            DataView dvGrade = _dtbGrades.DefaultView;
            dvGrade.RowFilter = String.Format("SubpieceName='{0}'", cmbSubMarks.SelectedItem.ToString().Trim());
            tmpGrades.Dispose();

            // Initialize Tab of grade/pass or fail
            chkEnablePFS.Checked = ch.IsGradePassFailEnable(cmbConfig.SelectedItem.ToString().Trim());
            txtFilterScore.Text = ch.GetPassFailScore(cmbConfig.SelectedItem.ToString().Trim()).ToString();
        }
Exemple #4
0
        private void GradeSetup_Load(object sender, EventArgs e)
        {
            // Prepare cmbConfig datasource
            List<string> gradeConfigs = new List<string>();
            DirectoryInfo dirInfo = new DirectoryInfo(PathHelper.GradeConfigFolder);
            FileInfo[] files = dirInfo.GetFiles("*.xml");
            foreach (FileInfo file in files)
            {
                gradeConfigs.Add(file.Name.ToString().Substring(0, file.Name.ToString().LastIndexOf(".")));
            }
            // Binding cmbConfig
            cmbConfig.DataSource = gradeConfigs;
            ConfigHelper ch = new ConfigHelper();
            cmbConfig.SelectedItem = ch.GetDefaultGradeConfigName().Trim();

            //ROI Settings
            //----------------------------------------------------------------------------------------//

            // Initialize Roi Mode
            RadioButton[] rdos = { rdoNoRoi, rdoSymmetrical };
            foreach (RadioButton rdo in rdos)
            {
                string roiMode = ch.GetGradeNoRoiMode(cmbConfig.SelectedItem.ToString());
                if (rdo.Text == roiMode)
                {
                    rdo.Checked = true;
                }
                else
                {
                    rdo.Checked = false;
                }
            }

            // Initialize TextBox of Columns, Rows
            txtColumns.Text = ch.GetGradeColumns(cmbConfig.SelectedItem.ToString()).ToString();
            txtRows.Text = ch.GetGradeRows(cmbConfig.SelectedItem.ToString()).ToString();

            // Initialize dgvColumns without data.
            Column name = new Column(0, "Name", 75);
            Column start = new Column(1, "Start", 60);
            Column end = new Column(2, "End", 60);
            List<Column> columns = new List<Column>();
            columns.Add(name);
            columns.Add(start);
            columns.Add(end);
            foreach (Column c in columns)
            {
                DataGridViewCell cell = new DataGridViewTextBoxCell();
                DataGridViewColumn column = new DataGridViewColumn();
                column.CellTemplate = cell;
                column.Name = c.Name;
                column.HeaderText = c.Name;
                column.Width = c.Width;
                column.DataPropertyName = c.Name;
                column.SortMode = DataGridViewColumnSortMode.Automatic;
                column.FillWeight = c.Width;
                column.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
                if (column.Name == "Name")
                {
                    column.ReadOnly = true;
                }
                dgvColumns.Columns.Add(column);
            }
            dgvColumns.MultiSelect = false;
            dgvColumns.AutoGenerateColumns = false;

            // Initialize dgvRows without data.
            foreach (Column c in columns)
            {
                DataGridViewCell cell = new DataGridViewTextBoxCell();
                DataGridViewColumn column = new DataGridViewColumn();
                column.CellTemplate = cell;
                column.Name = c.Name;
                column.HeaderText = c.Name;
                column.Width = c.Width;
                column.DataPropertyName = c.Name;
                column.SortMode = DataGridViewColumnSortMode.Automatic;
                column.FillWeight = c.Width;
                column.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
                if (column.Name == "Name")
                {
                    column.ReadOnly = true;
                }
                dgvRows.Columns.Add(column);
            }
            dgvRows.MultiSelect = false;
            dgvRows.AutoGenerateColumns = false;

            // Initialize DataTable of dgvColumns and dgvRows
            _dtbColumns = ch.GetDataTableOfdgvColumns(cmbConfig.SelectedItem.ToString().Trim());
            dgvColumns.DataSource = _dtbColumns;
            _dtbRows = ch.GetDataTableOfdgvRows(cmbConfig.SelectedItem.ToString().Trim());
            dgvRows.DataSource = _dtbRows;

            // Grade Settings
            //----------------------------------------------------------------------------------------//

            // Initialize Point is enable.
            chkEnablePonit.Checked = ch.IsGradePointEnable(cmbConfig.SelectedItem.ToString().Trim());

            // Initialize SubPiece (cmbSubPoints)
            _pointsSubpieceNames = new List<string>();
            _pointsSubpieceNames = ch.GetSubPointsNameList(cmbConfig.SelectedItem.ToString().Trim());
            cmbSubPoints.DataSource = _pointsSubpieceNames;

            // Initialize dgvPoint without data
            Column className = new Column(0, "ClassName", 200);
            Column score = new Column(1, "Score", 200);
            columns = new List<Column>();
            columns.Add(className);
            columns.Add(score);
            foreach (Column c in columns)
            {
                DataGridViewCell cell = new DataGridViewTextBoxCell();
                DataGridViewColumn column = new DataGridViewColumn();
                column.CellTemplate = cell;
                column.Name = c.Name;
                column.HeaderText = c.Name;
                column.Width = c.Width;
                column.DataPropertyName = c.Name;
                column.SortMode = DataGridViewColumnSortMode.Automatic;
                column.FillWeight = c.Width;
                column.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
                if (c.Name == "ClassName")
                {
                    //column.ReadOnly = true;
                }
                dgvPoint.Columns.Add(column);
            }
            dgvPoint.MultiSelect = false;
            dgvPoint.AutoGenerateColumns = false;

            // Initialize dgvGrade without data
            Column gradeName = new Column(0, "GradeName", 200);
            score = new Column(1, "Score", 200);
            columns = new List<Column>();
            columns.Add(gradeName);
            columns.Add(score);
            foreach (Column c in columns)
            {
                DataGridViewCell cell = new DataGridViewTextBoxCell();
                DataGridViewColumn column = new DataGridViewColumn();
                column.CellTemplate = cell;
                column.Name = c.Name;
                column.HeaderText = c.Name;
                column.Width = c.Width;
                column.DataPropertyName = c.Name;
                column.SortMode = DataGridViewColumnSortMode.Automatic;
                column.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
                if (c.Name == "GradeName")
                {
                    //column.ReadOnly = true;
                }
                dgvGrade.Columns.Add(column);
            }
            dgvGrade.MultiSelect = false;
            dgvGrade.AutoGenerateColumns = false;

            // Set dgvPoint datasource
            _dtbPoints = ch.GetDataTabledgvPoints(cmbConfig.SelectedItem.ToString().Trim());
            dgvPoint.DataSource = _dtbPoints;
            DataView dvPoints = _dtbPoints.DefaultView;
            dvPoints.RowFilter = String.Format("SubpieceName='{0}'", cmbSubPoints.SelectedItem.ToString().Trim());

            // Initialize grade is enable (marks)
            chkEnableGrade.Checked = ch.IsGradeMarksEnable(cmbConfig.SelectedItem.ToString().Trim());

            // Initialize SubPiece (cmbSubPoints)
            _marksSubpieceNames = ch.GetSubMarksNameList(cmbConfig.SelectedItem.ToString().Trim());
            cmbSubMarks.DataSource = _marksSubpieceNames;

            // Set dgvGrade datasource
            _dtbGrades = ch.GetDataTabledgvGrade(cmbConfig.SelectedItem.ToString().Trim());
            dgvGrade.DataSource = _dtbGrades;
            DataView dvGrade = _dtbGrades.DefaultView;
            dvGrade.RowFilter = String.Format("SubpieceName='{0}'", cmbSubMarks.SelectedItem.ToString().Trim());

            // Initialize Tab of grade/pass or fail
            chkEnablePFS.Checked = ch.IsGradePassFailEnable(cmbConfig.SelectedItem.ToString().Trim());
            txtFilterScore.Text = ch.GetPassFailScore(cmbConfig.SelectedItem.ToString().Trim()).ToString();
        }
Exemple #5
0
        private void btnReset_Click(object sender, EventArgs e)
        {
            DialogResult dialogResult = MessageBox.Show("Are you sure you want to reset subpiece setting?", "Reset Setting", MessageBoxButtons.YesNo,MessageBoxIcon.Warning);
            if (dialogResult == DialogResult.Yes)
            {
                // Prepare cmbConfig datasource
                List<string> gradeConfigs = new List<string>();
                DirectoryInfo dirInfo = new DirectoryInfo(PathHelper.GradeConfigFolder);
                FileInfo[] files = dirInfo.GetFiles("*.xml");
                foreach (FileInfo file in files)
                {
                    gradeConfigs.Add(file.Name.ToString().Substring(0, file.Name.ToString().LastIndexOf(".")));
                }
                // Binding cmbConfig
                cmbConfig.DataSource = gradeConfigs;
                ConfigHelper ch = new ConfigHelper();
                cmbConfig.SelectedItem = ch.GetDefaultGradeConfigName().Trim();

                //ROI Settings
                //----------------------------------------------------------------------------------------//

                // Initialize Roi Mode
                RadioButton[] rdos = { rdoNoRoi, rdoSymmetrical };
                foreach (RadioButton rdo in rdos)
                {
                    string roiMode = ch.GetGradeNoRoiMode(cmbConfig.SelectedItem.ToString());
                    if (rdo.Text == roiMode)
                    {
                        rdo.Checked = true;
                    }
                    else
                    {
                        rdo.Checked = false;
                    }
                }

                // Initialize TextBox of Columns, Rows
                txtColumns.Text = ch.GetGradeColumns(cmbConfig.SelectedItem.ToString()).ToString();
                txtRows.Text = ch.GetGradeRows(cmbConfig.SelectedItem.ToString()).ToString();

                // Initialize DataTable of dgvColumns and dgvRows
                _dtbColumns = ch.GetDataTableOfdgvColumns(cmbConfig.SelectedItem.ToString().Trim());
                dgvColumns.DataSource = _dtbColumns;
                _dtbRows = ch.GetDataTableOfdgvRows(cmbConfig.SelectedItem.ToString().Trim());
                dgvRows.DataSource = _dtbRows;

                // Grade Settings
                //----------------------------------------------------------------------------------------//

                // Initialize Point is enable.
                chkEnablePonit.Checked = ch.IsGradePointEnable(cmbConfig.SelectedItem.ToString().Trim());

                // Initialize SubPiece (cmbSubPoints)
                _pointsSubpieceNames = ch.GetSubPointsNameList(cmbConfig.SelectedItem.ToString().Trim());

                // Set dgvPoint datasource
                _dtbPoints = ch.GetDataTabledgvPoints(cmbConfig.SelectedItem.ToString().Trim());
                dgvPoint.DataSource = _dtbPoints;
                DataView dvPoints = _dtbPoints.DefaultView;
                dvPoints.RowFilter = String.Format("SubpieceName='{0}'", cmbSubPoints.SelectedItem.ToString().Trim());

                // Initialize grade is enable (marks)
                chkEnableGrade.Checked = ch.IsGradeMarksEnable(cmbConfig.SelectedItem.ToString().Trim());

                // Initialize SubPiece (cmbSubPoints)
                cmbSubMarks.DataSource = ch.GetSubMarksNameList(cmbConfig.SelectedItem.ToString().Trim());

                // Set dgvGrade datasource
                _dtbGrades = ch.GetDataTabledgvGrade(cmbConfig.SelectedItem.ToString().Trim());
                dgvGrade.DataSource = _dtbGrades;
                DataView dvGrade = _dtbGrades.DefaultView;
                dvGrade.RowFilter = String.Format("SubpieceName='{0}'", cmbSubMarks.SelectedItem.ToString().Trim());

                // Initialize Tab of grade/pass or fail
                chkEnablePFS.Checked = ch.IsGradePassFailEnable(cmbConfig.SelectedItem.ToString().Trim());
                txtFilterScore.Text = ch.GetPassFailScore(cmbConfig.SelectedItem.ToString().Trim()).ToString();
            }
        }