}//renderViewPropFilter()

        public static string FilterModeToString(CswEnumNbtFilterMode FilterMode)
        {
            string ret = FilterMode.ToString();

            if (FilterMode == CswEnumNbtFilterMode.GreaterThan)
            {
                ret = "After";
            }
            else if (FilterMode == CswEnumNbtFilterMode.GreaterThanOrEquals)
            {
                ret = "After Or On";
            }
            else if (FilterMode == CswEnumNbtFilterMode.LessThan)
            {
                ret = "Before";
            }
            else if (FilterMode == CswEnumNbtFilterMode.LessThanOrEquals)
            {
                ret = "Before Or On";
            }
            else if (FilterMode == CswEnumNbtFilterMode.Equals)
            {
                ret = "On";
            }
            else if (FilterMode == CswEnumNbtFilterMode.NotEquals)
            {
                ret = "Not On";
            }
            return(ret);
        }
예제 #2
0
        /// <summary>
        /// Creates a CswNbtViewPropertyFilter and returns its Json
        /// </summary>
        public JObject makeViewPropFilter(CswNbtView View, JObject FilterProp, bool ClearFilters = false)
        {
            JObject Ret = new JObject();

            string FiltArbitraryId = CswConvert.ToString(FilterProp["filtarbitraryid"]);
            string PropArbitraryId = CswConvert.ToString(FilterProp["proparbitraryid"]);

            if (FiltArbitraryId == "undefined")
            {
                FiltArbitraryId = string.Empty;
            }
            if (PropArbitraryId == "undefined")
            {
                PropArbitraryId = string.Empty;
            }

            CswNbtViewPropertyFilter ViewPropFilt = null;

            if (false == string.IsNullOrEmpty(PropArbitraryId))
            {
                CswNbtViewProperty ViewProp = (CswNbtViewProperty)View.FindViewNodeByArbitraryId(PropArbitraryId);

                if (false == string.IsNullOrEmpty(FiltArbitraryId))
                {
                    ViewPropFilt = (CswNbtViewPropertyFilter)View.FindViewNodeByArbitraryId(FiltArbitraryId);
                }
                else
                {
                    ViewPropFilt = View.AddViewPropertyFilter(ViewProp, CswEnumNbtSubFieldName.Unknown, CswEnumNbtFilterMode.Unknown, string.Empty, false);
                }

                //Case 23779, 23937, 24064
                if (ClearFilters && null != ViewPropFilt)
                {
                    ViewProp.Filters.Clear();
                    ViewProp.Filters.Add(ViewPropFilt);
                }
            }

            if (ViewPropFilt != null)
            {
                CswEnumNbtFilterConjunction Conjunction = (CswEnumNbtFilterConjunction)CswConvert.ToString(FilterProp["conjunction"]);
                CswEnumNbtSubFieldName      FieldName   = (CswEnumNbtSubFieldName)CswConvert.ToString(FilterProp["subfieldname"]);
                CswEnumNbtFilterMode        FilterMode  = (CswEnumNbtFilterMode)CswConvert.ToString(FilterProp["filter"]);
                string FilterValue = CswConvert.ToString(FilterProp["filtervalue"]);

                if (FieldName != CswEnumNbtSubFieldName.Unknown &&
                    FilterMode != CswEnumNbtFilterMode.Unknown)
                {
                    ViewPropFilt.FilterMode   = FilterMode;
                    ViewPropFilt.Conjunction  = Conjunction;
                    ViewPropFilt.SubfieldName = FieldName;
                    ViewPropFilt.Value        = FilterValue;
                    _addVbPropFilter(Ret, ViewPropFilt);
                }
            }
            return(Ret);
        }
예제 #3
0
 /// <summary>
 /// For creating a property filter
 /// </summary>
 public CswNbtViewPropertyFilter(CswNbtResources CswNbtResources, CswNbtView View,
                                 CswEnumNbtSubFieldName inSubFieldName,
                                 CswEnumNbtFilterMode inFilterMode,
                                 string inValue,
                                 CswEnumNbtFilterResultMode inResultMode,
                                 CswEnumNbtFilterConjunction PropertyFilterConjunction,
                                 bool inCaseSensitive = false,
                                 bool inShowAtRuntime = false)
     : base(CswNbtResources, View)
 {
     _constructor(CswNbtResources, View, inSubFieldName, inFilterMode, inValue, inResultMode, inCaseSensitive, inShowAtRuntime, PropertyFilterConjunction);
 }
        public string renderViewPropFilter(ICswNbtUser RunAsUser, CswNbtViewPropertyFilter CswNbtViewPropertyFilterIn, Dictionary <string, string> ParameterCollection, int FilterNumber)
        {
            //return ( _CswNbtFieldTypeRuleDefault.renderViewPropFilter( RunAsUser, SubFields, CswNbtViewPropertyFilterIn ) );

            CswEnumNbtSubFieldName OldSubfieldName = CswNbtViewPropertyFilterIn.SubfieldName;
            CswEnumNbtFilterMode   OldFilterMode   = CswNbtViewPropertyFilterIn.FilterMode;
            string OldValue = CswNbtViewPropertyFilterIn.Value;

            // BZ 8558
            if (OldSubfieldName == SubFieldName.Value && OldValue.ToLower() == "me")
            {
                CswNbtViewProperty Prop = (CswNbtViewProperty)CswNbtViewPropertyFilterIn.Parent;

                ICswNbtMetaDataProp MetaDataProp = null;
                if (Prop.Type == CswEnumNbtViewPropType.NodeTypePropId)
                {
                    MetaDataProp = Prop.NodeTypeProp;
                }
                else if (Prop.Type == CswEnumNbtViewPropType.ObjectClassPropId)
                {
                    MetaDataProp = _CswNbtFieldResources.CswNbtResources.MetaData.getObjectClassProp(Prop.ObjectClassPropId);
                }

                // Could be a propref of a propref, so we can't look at the relationship

                //ICswNbtMetaDataProp RelationshipProp = null;
                //if( MetaDataProp.FKType == NbtViewPropType.NodeTypePropId.ToString() )
                //    RelationshipProp = _CswNbtFieldResources.CswNbtResources.MetaData.getNodeTypeProp( MetaDataProp.FKValue);
                //else if( MetaDataProp.FKType == NbtViewPropType.ObjectClassPropId.ToString() )
                //    RelationshipProp = _CswNbtFieldResources.CswNbtResources.MetaData.getObjectClassProp( MetaDataProp.FKValue );

                //if( RelationshipProp != null && RelationshipProp.IsUserRelationship() )
                //{
                if (CswNbtViewPropertyFilterIn.Value.ToLower() == "me")
                {
                    CswNbtViewPropertyFilterIn.SubfieldName = SubFieldName.Value;
                    CswNbtViewPropertyFilterIn.FilterMode   = CswEnumNbtFilterMode.Equals;
                    CswNbtViewPropertyFilterIn.Value        = _CswNbtFieldResources.CswNbtResources.Nodes[RunAsUser.UserId].NodeName;
                }
                //}
            }
            string ret = _CswNbtFieldTypeRuleDefault.renderViewPropFilter(RunAsUser, CswNbtViewPropertyFilterIn, ParameterCollection, FilterNumber);

            CswNbtViewPropertyFilterIn.SubfieldName = OldSubfieldName;
            CswNbtViewPropertyFilterIn.FilterMode   = OldFilterMode;
            CswNbtViewPropertyFilterIn.Value        = OldValue;

            return(ret);
        }//makeWhereClause()
        }//makeWhereClause()

        public string FilterModeToString(CswNbtSubField SubField, CswEnumNbtFilterMode FilterMode)
        {
            string ret = string.Empty;

            // Are we using a Date filter?
            if (SubField.Name == StartDateSubField.Name)
            {
                return(CswNbtFieldTypeRuleDateImpl.FilterModeToString(FilterMode));
            }
            else
            {
                ret = _CswNbtFieldTypeRuleDefault.FilterModeToString(SubField, FilterMode);
            }

            return(ret);
        }
        }//renderViewPropFilter()

        public string FilterModeToString(CswNbtSubField SubField, CswEnumNbtFilterMode FilterMode)
        {
            string ReturnVal = string.Empty;

            // Are we using a Date filter?
            if (SubField.Name == DateAnsweredSubField.Name || SubField.Name == DateCorrectedSubField.Name)
            {
                ReturnVal = CswNbtFieldTypeRuleDateImpl.FilterModeToString(FilterMode);
            }
            else
            {
                ReturnVal = _CswNbtFieldTypeRuleDefault.FilterModeToString(SubField, FilterMode);
            }

            return(ReturnVal);
        }
예제 #7
0
        public static CswNbtView getMaterialNodeView( CswNbtResources NbtResources, Int32 NodeTypeId, string Tradename, CswPrimaryKey SupplierId, string PartNo = "", bool IsConstituent = false )
        {
            if( Int32.MinValue == NodeTypeId ||
                ( false == CswTools.IsPrimaryKey( SupplierId ) && false == IsConstituent ) ||
                String.IsNullOrEmpty( Tradename ) )
            {
                throw new CswDniException( CswEnumErrorType.Error,
                                           "Cannot get a material without a type, a supplier and a tradename.",
                                           "Attempted to call _getMaterialNodeView with invalid or empty parameters. Type: " + NodeTypeId + ", Tradename: " + Tradename + ", SupplierId: " + SupplierId );
            }

            CswNbtView Ret = new CswNbtView( NbtResources );
            Ret.ViewMode = CswEnumNbtViewRenderingMode.Tree;
            Ret.Visibility = CswEnumNbtViewVisibility.User;
            Ret.VisibilityUserId = NbtResources.CurrentNbtUser.UserId;
            CswNbtMetaDataNodeType MaterialNt = NbtResources.MetaData.getNodeType( NodeTypeId );
            CswNbtViewRelationship MaterialRel = Ret.AddViewRelationship( MaterialNt, false );
            CswNbtMetaDataNodeTypeProp TradeNameNtp = MaterialNt.getNodeTypePropByObjectClassProp( PropertyName.TradeName );
            CswNbtMetaDataNodeTypeProp SupplierNtp = MaterialNt.getNodeTypePropByObjectClassProp( PropertyName.Supplier );
            CswNbtMetaDataNodeTypeProp PartNoNtp = MaterialNt.getNodeTypePropByObjectClassProp( PropertyName.PartNumber );


            Ret.AddViewPropertyAndFilter( MaterialRel, TradeNameNtp, Tradename );
            // If we are looking for other Constituents, we don't need Supplier and PartNo
            if( false == IsConstituent )
            {
                Ret.AddViewPropertyAndFilter( MaterialRel, SupplierNtp, SupplierId.PrimaryKey.ToString(), CswNbtFieldTypeRuleRelationship.SubFieldName.NodeID );
                CswEnumNbtFilterMode PartNoFilterMode = CswEnumNbtFilterMode.Equals;
                if( string.IsNullOrEmpty( PartNo ) )
                {
                    PartNoFilterMode = CswEnumNbtFilterMode.Null;
                }
                Ret.AddViewPropertyAndFilter( MaterialRel, PartNoNtp, PartNo, FilterMode : PartNoFilterMode );
            }

            if( NbtResources.Modules.IsModuleEnabled( CswEnumNbtModuleName.Containers ) )
            {
                CswNbtMetaDataObjectClass SizeOc = NbtResources.MetaData.getObjectClass( CswEnumNbtObjectClass.SizeClass );
                CswNbtMetaDataObjectClassProp MaterialOcp = SizeOc.getObjectClassProp( CswNbtObjClassSize.PropertyName.Material );
                Ret.AddViewRelationship( MaterialRel, CswEnumNbtViewPropOwnerType.Second, MaterialOcp, false );
            }

            Ret.ViewName = "New Material: " + Tradename;

            return Ret;
        }
예제 #8
0
 private void _constructor(CswNbtResources CswNbtResources, CswNbtView View,
                           CswEnumNbtSubFieldName inSubFieldName,
                           CswEnumNbtFilterMode inFilterMode,
                           string inValue,
                           CswEnumNbtFilterResultMode inResultMode,
                           bool inCaseSensitive,
                           bool inShowAtRuntime,
                           CswEnumNbtFilterConjunction inPropertyFilterConjunction)
 {
     SubfieldName  = inSubFieldName;
     FilterMode    = inFilterMode;
     Value         = inValue;
     CaseSensitive = inCaseSensitive;
     ShowAtRuntime = inShowAtRuntime;
     ResultMode    = inResultMode;
     Conjunction   = inPropertyFilterConjunction;
 }
예제 #9
0
        } // _addSystemViewPropFilter()

        private void _addSystemViewBarcodeFilter(object FilterValue, CswEnumNbtFilterMode FilterMode = null, CswEnumNbtFieldType FieldType = null)
        {
            FilterMode = FilterMode ?? CswEnumNbtFilterMode.Contains;
            foreach (CswNbtViewRelationship RootLevelRelationship in _NbtSystemView.SystemView.Root.ChildRelationships)
            {
                //CswNbtMetaDataObjectClass InstanceOc = null;
                //CswNbtMetaDataObjectClassProp BarcodeOcp = null;

                //if( NbtViewRelatedIdType.ObjectClassId == RootLevelRelationship.SecondType )
                //{
                //    InstanceOc = _CswNbtResources.MetaData.getObjectClass( RootLevelRelationship.SecondId );
                //    if( null != InstanceOc )
                //    {
                //        BarcodeOcp = (CswNbtMetaDataObjectClassProp) InstanceOc.getBarcodeProperty();

                //    }
                //}
                //else if( NbtViewRelatedIdType.NodeTypeId == RootLevelRelationship.SecondType )
                //{
                //    CswNbtMetaDataNodeType InstanceNt = _CswNbtResources.MetaData.getNodeType( RootLevelRelationship.SecondId );
                //    if( null != InstanceNt )
                //    {
                //        InstanceOc = InstanceNt.getObjectClass();
                //        CswNbtMetaDataNodeTypeProp BarcodeNtp = (CswNbtMetaDataNodeTypeProp) InstanceNt.getBarcodeProperty();
                //        if( null != BarcodeNtp )
                //        {
                //            BarcodeOcp = BarcodeNtp.getObjectClassProp();
                //        }
                //    }
                //}
                //else if( NbtViewRelatedIdType.PropertySetId == RootLevelRelationship.SecondType )
                //{
                //    // Not much we can do...
                //}

                ICswNbtMetaDataDefinitionObject secondObj   = _CswNbtResources.MetaData.getDefinitionObject(RootLevelRelationship.SecondType, RootLevelRelationship.SecondId);
                ICswNbtMetaDataProp             BarcodeProp = secondObj.getBarcodeProperty();

                if (null != BarcodeProp && null != secondObj)
                {
                    string FilterValueString = CswConvert.ToString(FilterValue);
                    CswNbtActSystemViews.SystemViewPropFilterDefinition ViewPropertyFilter = _NbtSystemView.makeSystemViewFilter(BarcodeProp, FilterValueString, FilterMode, FieldType: FieldType);
                    _NbtSystemView.addSystemViewFilter(ViewPropertyFilter, secondObj);
                }
            }
        } // _addSystemViewBarcodeFilter()
예제 #10
0
        public string renderViewPropFilter(ICswNbtUser RunAsUser, CswNbtViewPropertyFilter CswNbtViewPropertyFilterIn, Dictionary <string, string> ParameterCollection, int FilterNumber)
        {
            CswEnumNbtSubFieldName OldSubfieldName = CswNbtViewPropertyFilterIn.SubfieldName;
            CswEnumNbtFilterMode   OldFilterMode   = CswNbtViewPropertyFilterIn.FilterMode;
            string OldValue = CswNbtViewPropertyFilterIn.Value;

            // BZ 8558
            if (OldSubfieldName == SubFieldName.Name && OldValue.ToLower() == "me")
            {
                CswNbtViewProperty  Prop         = (CswNbtViewProperty)CswNbtViewPropertyFilterIn.Parent;
                ICswNbtMetaDataProp MetaDataProp = null;
                if (Prop.Type == CswEnumNbtViewPropType.NodeTypePropId)
                {
                    MetaDataProp = Prop.NodeTypeProp;
                }
                else if (Prop.Type == CswEnumNbtViewPropType.ObjectClassPropId)
                {
                    MetaDataProp = _CswNbtFieldResources.CswNbtResources.MetaData.getObjectClassProp(Prop.ObjectClassPropId);
                }

                if (MetaDataProp != null && MetaDataProp.IsUserRelationship())
                {
                    if (CswNbtViewPropertyFilterIn.Value.ToLower() == "me" && false == (RunAsUser is CswNbtSystemUser))
                    {
                        CswNbtViewPropertyFilterIn.SubfieldName = SubFieldName.NodeID;
                        CswNbtViewPropertyFilterIn.FilterMode   = CswEnumNbtFilterMode.Equals;
                        CswNbtViewPropertyFilterIn.Value        = RunAsUser.UserId.PrimaryKey.ToString();
                    }
                }
            }
            string ret = _CswNbtFieldTypeRuleDefault.renderViewPropFilter(RunAsUser, CswNbtViewPropertyFilterIn, ParameterCollection, FilterNumber);

            CswNbtViewPropertyFilterIn.SubfieldName = OldSubfieldName;
            CswNbtViewPropertyFilterIn.FilterMode   = OldFilterMode;
            CswNbtViewPropertyFilterIn.Value        = OldValue;

            return(ret);
        }
예제 #11
0
        }//makeWhereClause()

        public string FilterModeToString(CswNbtSubField SubField, CswEnumNbtFilterMode FilterMode)
        {
            return(_CswNbtFieldTypeRuleDefault.FilterModeToString(SubField, FilterMode));
        }
예제 #12
0
        /// <summary>
        /// Create properties based from the object class
        /// </summary>
        private void _setPropertyValuesFromObjectClass()
        {
            Dictionary <Int32, CswNbtObjClassDesignNodeTypeProp> NewNTPropsByOCPId = new Dictionary <Int32, CswNbtObjClassDesignNodeTypeProp>();

            //int DisplayRow = 1;

            // Create/convert object class props
            foreach (CswNbtMetaDataObjectClassProp OCProp in ObjectClassPropertyValue.getObjectClassProps())
            {
                CswNbtObjClassDesignNodeTypeProp PropNode = null;
                if (null != RelationalNodeType)
                {
                    PropNode = (from Prop in RelationalNodeType.getNodeTypeProps()
                                where (Prop.PropName == OCProp.PropName || Prop.getObjectClassPropName() == OCProp.PropName) && Prop.FieldTypeId == OCProp.FieldTypeId
                                select Prop.DesignNode
                                ).FirstOrDefault();
                }
                // If converting, need to detect existing properties
                if (null != PropNode)
                {
                    PropNode.ObjectClassPropName.Value = OCProp.PropId.ToString();
                    NewNTPropsByOCPId.Add(OCProp.PropId, PropNode);
                }
                else
                {
                    string NewPropName = OCProp.PropName;
                    while (null != RelationalNodeType &&
                           null != RelationalNodeType.getNodeTypeProp(NewPropName))
                    {
                        NewPropName = NewPropName + " (new)";
                    }

                    CswNbtMetaDataNodeType DesignNodeTypePropNT = _CswNbtResources.MetaData.getNodeType(CswNbtObjClassDesignNodeTypeProp.getNodeTypeName(OCProp.getFieldTypeValue()));
                    PropNode = _CswNbtResources.Nodes.makeNodeFromNodeTypeId(DesignNodeTypePropNT.NodeTypeId, delegate(CswNbtNode NewNode)
                    {
                        ((CswNbtObjClassDesignNodeTypeProp)NewNode).NodeTypeValue.RelatedNodeId = this.NodeId;
                        ((CswNbtObjClassDesignNodeTypeProp)NewNode).ObjectClassPropName.Value   = OCProp.PropId.ToString();
                        ((CswNbtObjClassDesignNodeTypeProp)NewNode).FieldType.Value             = OCProp.FieldTypeId.ToString();
                        ((CswNbtObjClassDesignNodeTypeProp)NewNode).PropName.Text = NewPropName;
                    });

                    NewNTPropsByOCPId.Add(OCProp.ObjectClassPropId, PropNode);
                } // if-else( null != PropNode )

                //only update the layout when we're not overriding an existing nodetype
                PropNode.syncFromObjectClassProp(false == _overrideNodeConversionCheck);
            } // foreach( CswNbtMetaDataObjectClassProp OCProp in ObjectClassPropertyValue.getObjectClassProps() )

            // Now that we're done with all object class props, we can handle filters
            foreach (CswNbtMetaDataObjectClassProp OCProp in ObjectClassPropertyValue.getObjectClassProps())
            {
                if (OCProp.hasFilter())
                {
                    CswNbtObjClassDesignNodeTypeProp NTProp = NewNTPropsByOCPId[OCProp.ObjectClassPropId];
                    if (null != NTProp)
                    {
                        CswNbtObjClassDesignNodeTypeProp TargetOfFilter = NewNTPropsByOCPId[OCProp.FilterObjectClassPropId];
                        if (TargetOfFilter != null)
                        {
                            CswNbtSubField       SubField   = null;
                            CswEnumNbtFilterMode FilterMode = CswEnumNbtFilterMode.Unknown;
                            string FilterValue = string.Empty;
                            OCProp.getFilter(ref SubField, ref FilterMode, ref FilterValue);

                            // We don't have to worry about versioning in this function
                            NTProp.DisplayConditionProperty.RelatedNodeId = TargetOfFilter.NodeId;
                            NTProp.DisplayConditionSubfield.Value         = SubField.Name.ToString();
                            NTProp.DisplayConditionFilterMode.Value       = FilterMode.ToString();
                            NTProp.DisplayConditionValue.Text             = FilterValue;
                            NTProp.postChanges(false);
                        } // if( TargetOfFilter != null )
                    }     // if( null != NTProp )
                }         // if( OCProp.hasFilter() )
            }             // foreach( CswNbtMetaDataObjectClassProp OCProp in ObjectClassProps )


            // Handle search defer inheritance from object classes
            if (Int32.MinValue != ObjectClassPropertyValue.SearchDeferPropId)
            {
                //if( CswNbtMetaDataObjectClass.NotSearchableValue != ObjectClassPropertyValue.SearchDeferPropId )
                //{
                CswNbtObjClassDesignNodeTypeProp SearchDeferProp = NewNTPropsByOCPId[ObjectClassPropertyValue.SearchDeferPropId];
                this.DeferSearchTo.RelatedNodeId = SearchDeferProp.NodeId;
                //}
                //else
                //{
                //    this.DeferSearchTo.RelatedNodeId = null;
                //}
            }
        } // _setPropertyValuesFromObjectClass()
예제 #13
0
        }//makeWhereClause()

        public string FilterModeToString(CswNbtSubField SubField, CswEnumNbtFilterMode FilterMode)
        {
            return(CswNbtFieldTypeRuleDateImpl.FilterModeToString(FilterMode));
        }
예제 #14
0
        }//makeWhereClause()

        public string FilterModeToString(CswNbtSubField SubField, CswEnumNbtFilterMode FilterMode)
        {
            // Default implementation
            return(FilterMode.ToString());
        }
예제 #15
0
 private void _addSystemViewPropFilter(CswEnumNbtObjectClass ObjectClass, string PropertyName, object FilterValue, CswEnumNbtFilterMode FilterMode = null, CswEnumNbtFieldType FieldType = null)
 {
     if (ObjectClass != CswNbtResources.UnknownEnum)
     {
         FilterMode = FilterMode ?? CswEnumNbtFilterMode.Contains;
         CswNbtMetaDataObjectClass InstanceOc = _CswNbtResources.MetaData.getObjectClass(ObjectClass);
         if (null != InstanceOc)
         {
             CswNbtMetaDataObjectClassProp InstancePropertyOcp = InstanceOc.getObjectClassProp(PropertyName);
             if (null != InstancePropertyOcp)
             {
                 string FilterValueString = CswConvert.ToString(FilterValue);
                 CswNbtActSystemViews.SystemViewPropFilterDefinition ViewPropertyFilter = _NbtSystemView.makeSystemViewFilter(InstancePropertyOcp, FilterValueString, FilterMode, FieldType: FieldType);
                 _NbtSystemView.addSystemViewFilter(ViewPropertyFilter, InstanceOc);
             }
         }
     }
 } // _addSystemViewPropFilter()
예제 #16
0
 public SystemViewPropFilterDefinition makeSystemViewFilter(ICswNbtMetaDataProp ObjectClassProp, string FilterValue, CswEnumNbtFilterMode FilterMode, CswEnumNbtSubFieldName SubFieldName = null, CswEnumNbtFieldType FieldType = null, bool ShowInGrid = true)
 {
     SubFieldName = SubFieldName ?? ObjectClassProp.getFieldTypeRule().SubFields.Default.Name;
     return(new SystemViewPropFilterDefinition
     {
         ObjectClassProp = ObjectClassProp,
         FilterValue = FilterValue,
         FilterMode = FilterMode,
         SubFieldName = SubFieldName,
         FieldType = FieldType,
         ShowInGrid = ShowInGrid
     });
 }