public static bool CheckComplexListField(TermEdit termEdit)
 {
     return termEdit.TermHandler == TermHandler.ComplexListField;
 }
		protected override void LoadViewState(object savedState)
		{
			base.LoadViewState(savedState);
            _termEdit = (TermEdit)ViewState[_KH_VS_TERM_EDIT];
        }
        protected void grdFieldList_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            int rowIndex = Convert.ToInt32(e.CommandArgument);
            Guid fieldID = (Guid)grdFieldList.DataKeys[rowIndex].Value;
            int fieldIndex = FindFieldIndex(fieldID, _template.ComplexLists, Term.ID);

            Predicate<Term> pcomp = delegate(Term c) { return (c.ID == Term.ID); };
            Business.ComplexList complexList = null;
            switch (e.CommandName)
            {
                case Common.Names._GRID_COMMAND_EditRow:
                    ComplexListField f = ((ComplexList)_template.ComplexLists.Find(pcomp)).FindField((Guid)grdFieldList.DataKeys[rowIndex].Value);

                    //IsChanged related change
                    if (IsChanged)
                        Context.Items[Common.Names._CNTXT_IsChanged] = true;
                    Context.Items[Common.Names._CNTXT_Template] = _template;

                    BaseTermEditPage.TermEdit termEdit = new TermEdit();
                    termEdit.EditMode = EditMode.Edit;
                    termEdit.TermHandler = TermHandler.ComplexListField;
                    termEdit.TermIndex = TermIndex;
                    termEdit.ComplexListFieldIndex = fieldIndex;

                    Context.Items[Common.Names._CNTXT_TermEdit] = termEdit;

                    Server.Transfer(Helper.TemplateTermEditPage(f.FilterTerm.TermType));
                    break;

                case Common.Names._GRID_COMMAND_DeleteRow:
                    complexList = Term as Business.ComplexList;
                    complexList.Fields.RemoveAt(rowIndex);
                    complexList.DeleteItemValue(fieldID);
                    IsChanged = false;  //Do this to suppress the 'navigate from page' warning.
                    BindGrid(complexList.Fields);
                    IsChanged = true;
                    break;

                case Common.Names._GRID_COMMAND_SingleClick:
                case Common.Names._GRID_COMMAND_DoubleClick:
                    complexList = Term as Business.ComplexList;
                    ViewState[Common.Names._CNTXT_SelectedTermGroupIndex] = rowIndex;
                    BindGrid(complexList.Fields);
                    SetMoveUpDownButtonEvents(grdFieldList, btnTermGroupMoveUp, btnTermGroupMoveDown);
                    break;

                default:
                    break;
            }
        }
        private void GetContextData()
        {
            _termEdit = (TermEdit)Context.Items[Common.Names._CNTXT_TermEdit];

            switch (_termEdit.TermHandler)
            {
                case TermHandler.BasicTerm:
                    _termEdit.Term = _template.BasicTerms[_termEdit.TermIndex];
                    break;

                case TermHandler.ComplexList:
                    _termEdit.Term = _template.ComplexLists[_termEdit.TermIndex];
                    break;

                case TermHandler.ComplexListField:
                    ComplexList complexList = _template.ComplexLists[_termEdit.TermIndex] as ComplexList;
                    _termEdit.ComplexListField = complexList.Fields[_termEdit.ComplexListFieldIndex];
                    _termEdit.OldFieldName = _termEdit.ComplexListField.Name;
                    _termEdit.Term = _termEdit.ComplexListField.FilterTerm;
                    _termEdit.Term.BigText = _termEdit.ComplexListField.BigText ?? false;
                    _termEdit.Term.Summary = _termEdit.ComplexListField.Summary ?? false;
                    break;

                case TermHandler.ComplexListItem:
                    break;
            }

            if (_termEdit.Term == null)
                throw new Exception("The term was not found in this template.");
        }
        // grid for complex list fields
        protected void btnAdd_Command(object sender, CommandEventArgs e)
        {
            if ((string)e.CommandArgument == "Field")
            {
                Context.Items[Common.Names._CNTXT_Template] = _template;

                BaseTermEditPage.TermEdit termEdit = new TermEdit();
                termEdit.EditMode = EditMode.Add;
                termEdit.TermHandler = TermHandler.ComplexListField;
                termEdit.TermIndex = TermIndex;

                Context.Items[Common.Names._CNTXT_TermEdit] = termEdit;
                Server.Transfer("TermAdd.aspx", true);
                return;
            }
        }