private void butDuplicate_Click(object sender, EventArgs e) { if (gridMain.GetSelectedIndex() == -1) { MsgBox.Show(this, "Please select an evaluation to duplicate"); return; } //Creates a full copy of the EvaluationDef including all EvaluationCriterionDefs. EvaluationDef evalDefOld = EvaluationDefs.GetOne(PIn.Long(gridMain.Rows[gridMain.GetSelectedIndex()].Tag.ToString())); EvaluationDef evalDefNew = evalDefOld.Copy(); evalDefNew.EvalTitle += "-copy"; evalDefNew.EvaluationDefNum = EvaluationDefs.Insert(evalDefNew); List <EvaluationCriterionDef> listCritDefs = EvaluationCriterionDefs.GetAllForEvaluationDef(evalDefOld.EvaluationDefNum); for (int i = 0; i < listCritDefs.Count; i++) { EvaluationCriterionDef critDefCopy = listCritDefs[i].Copy(); critDefCopy.EvaluationDefNum = evalDefNew.EvaluationDefNum; EvaluationCriterionDefs.Insert(critDefCopy); } FillGrid(); }