private void LoadComponentsProperties(int rowIndex)
        {
            Table table = GetSelectedTable();
            if (table == null)
                return;

            string columnName = gridViewDetails[COL_COLUMNNAME, rowIndex].Value.ToString();
            KPMappingEntity mappingEntity = null;
            using (ISession session = ActiveRecordConfiguration.GetISession())
            {
                IQueryable<KPMappingEntity> queryable = session.Query<KPMappingEntity>()
                    .Where(x => x.OwnerSchema.Equals(table.OwnerSchema) &&
                                x.Database.Equals(table.DatabaseName) &&
                                x.Table.Equals(table.Name) &&
                                x.Column.Equals(columnName));


                mappingEntity = queryable.FirstOrDefault();
                if (mappingEntity == null)
                {
                    mappingEntity = new KPMappingEntity()
                    {
                        OwnerSchema = table.OwnerSchema,
                        Database = table.DatabaseName,
                        Table = table.Name,
                        Column = columnName
                    };

                    mappingEntity.SaveAndFlush();
                }
            }

            var entityColumn = gridViewDetails.Rows[rowIndex].DataBoundItem as Column;
            KPComponentsFormsEnum? componentFormEnum = gridViewDetails[COL_COLUMNTYPEFORM, rowIndex].Value as KPComponentsFormsEnum?;
            if (componentFormEnum.HasValue)
            {
                switch (componentFormEnum.Value)
                {
                    case KPComponentsFormsEnum.KPFormItemButton:
                        break;
                    case KPComponentsFormsEnum.KPFormItemCheckBox:
                        {
                            var entityControl = new KPFormItemCheckBoxEntity().GetEntityByMapping(mappingEntity, entityColumn);
                            if (!entityColumn.IsNullable)
                                entityControl.IsRequired = true;
                            propertyForm.SelectedObject = entityControl;
                        }
                        break;
                    case KPComponentsFormsEnum.KPFormItemCombo:
                        {
                            var entityControl = new KPFormItemComboEntity().GetEntityByMapping(mappingEntity, entityColumn);
                            if (!entityColumn.IsNullable)
                                entityControl.IsRequired = true;
                            propertyForm.SelectedObject = entityControl;
                        }
                        break;
                    case KPComponentsFormsEnum.KPFormItemEntity:
                        {
                            var entityControl = new KPFormItemEntityEntity().GetEntityByMapping(mappingEntity, entityColumn);
                            if (!entityColumn.IsNullable)
                                entityControl.IsRequired = true;
                            propertyForm.SelectedObject = entityControl;
                        }
                        break;
                    case KPComponentsFormsEnum.KPFormItemGrid:
                        {
                            var entityControl = new KPFormItemGridEntity().GetEntityByMapping(mappingEntity, entityColumn);
                            if (!entityColumn.IsNullable)
                                entityControl.IsRequired = true;
                            propertyForm.SelectedObject = entityControl;
                        }
                        break;
                    case KPComponentsFormsEnum.KPFormItemPassword:
                        {
                            var entityControl = new KPFormItemPasswordEntity().GetEntityByMapping(mappingEntity, entityColumn);
                            if (!entityColumn.IsNullable)
                                entityControl.IsRequired = true;
                            propertyForm.SelectedObject = entityControl;
                        }
                        break;
                    case KPComponentsFormsEnum.KPFormItemText:
                        {
                            var entityControl = new KPFormItemTextEntity().GetEntityByMapping(mappingEntity, entityColumn);
                            if (!entityColumn.IsNullable)
                                entityControl.IsRequired = true;
                            if (entityColumn.MappedDataType == typeof(DateTime)
                                || entityColumn.MappedDataType == typeof(DateTime?))
                                entityControl.MaskType = KPMaskTypeClassEnum.DATETIME;
                            propertyForm.SelectedObject = entityControl;
                        }
                        break;
                    case KPComponentsFormsEnum.KPFormItemDateTime:
                        {
                            var entityControl = new KPFormItemDateTimeEntity().GetEntityByMapping(mappingEntity, entityColumn);
                            if (!entityColumn.IsNullable)
                                entityControl.IsRequired = true;
                            propertyForm.SelectedObject = entityControl;
                        }
                        break;
                    case KPComponentsFormsEnum.KPFormItemZoom:
                        {
                            var entityControl = new KPFormItemZoomEntity().GetEntityByMapping(mappingEntity, entityColumn);
                            if (!entityColumn.IsNullable)
                                entityControl.IsRequired = true;
                            propertyForm.SelectedObject = entityControl;
                        }
                        break;
                    default:
                        propertyForm.SelectedObject = null;
                        break;
                }
            }

            KPComponentsViewEnum? componentViewEnum = gridViewDetails[COL_COLUMNTYPEVIEW, rowIndex].Value as KPComponentsViewEnum?;
            if (componentViewEnum.HasValue)
            {
                switch (componentViewEnum.Value)
                {
                    case KPComponentsViewEnum.KPColumnModel:
                        {
                            var entityControl = new KPColumnModelEntity().GetEntityByMapping(mappingEntity, entityColumn);
                            if (entityColumn.IsPrimaryKey)
                                entityControl.IsVisible = false;
                            if (entityColumn.MappedDataType == typeof(DateTime)
                                || entityColumn.MappedDataType == typeof(DateTime?))
                                entityControl.MaskType = KPMaskTypeClassEnum.DATETIME;
                            propertyView.SelectedObject = entityControl;
                        }
                        break;
                    case KPComponentsViewEnum.KPEnumModel:
                        {
                            var entityControl = new KPEnumModelEntity().GetEntityByMapping(mappingEntity, entityColumn);
                            propertyView.SelectedObject = entityControl;
                        }
                        break;
                    case KPComponentsViewEnum.KPEntityModel:
                        {
                            var entityControl = new KPEntityModelEntity().GetEntityByMapping(mappingEntity, entityColumn);
                            propertyView.SelectedObject = entityControl;
                        }
                        break;
                    case KPComponentsViewEnum.KPBooleanModel:
                        {
                            var entityControl = new KPBooleanModelEntity().GetEntityByMapping(mappingEntity, entityColumn);
                            propertyView.SelectedObject = entityControl;
                        }
                        break;
                    default:
                        propertyView.SelectedObject = null;
                        break;
                }
            }
        }
        public static ActiveRecordBase GetEntityControlForm(Column column)
        {
            ActiveRecordBase entity = null;
            if (column == null)
                return null;

            Table selectedTable = column.Table;
            using (ISession session = ActiveRecordConfiguration.GetISession())
            {
                IQueryable<KPMappingEntity> queryable = session.Query<KPMappingEntity>()
                    .Where(x => x.OwnerSchema.Equals(selectedTable.OwnerSchema) &&
                                x.Database.Equals(selectedTable.DatabaseName) &&
                                x.Table.Equals(selectedTable.Name) &&
                                x.Column.Equals(column.Name));

                KPMappingEntity mapEntity = queryable.FirstOrDefault();
                if (mapEntity != null)
                {
                    switch (column.ColumnTypeForm)
                    {
                        case KPComponentsFormsEnum.KPFormItemButton:
                            entity = new KPFormItemButtonEntity().GetEntityByMapping(mapEntity, column);
                            break;
                        case KPComponentsFormsEnum.KPFormItemCheckBox:
                            entity = new KPFormItemCheckBoxEntity().GetEntityByMapping(mapEntity, column);
                            break;
                        case KPComponentsFormsEnum.KPFormItemCombo:
                            entity = new KPFormItemComboEntity().GetEntityByMapping(mapEntity, column);
                            break;
                        case KPComponentsFormsEnum.KPFormItemEntity:
                            entity = new KPFormItemEntityEntity().GetEntityByMapping(mapEntity, column);
                            break;
                        case KPComponentsFormsEnum.KPFormItemGrid:
                            entity = new KPFormItemGridEntity().GetEntityByMapping(mapEntity, column);
                            break;
                        case KPComponentsFormsEnum.KPFormItemPassword:
                            entity = new KPFormItemPasswordEntity().GetEntityByMapping(mapEntity, column);
                            break;
                        case KPComponentsFormsEnum.KPFormItemText:
                            entity = new KPFormItemTextEntity().GetEntityByMapping(mapEntity, column);
                            break;
                        case KPComponentsFormsEnum.KPFormItemDateTime:
                            entity = new KPFormItemDateTimeEntity().GetEntityByMapping(mapEntity, column);
                            break;
                        case KPComponentsFormsEnum.KPFormItemZoom:
                            entity = new KPFormItemZoomEntity().GetEntityByMapping(mapEntity, column);
                            break;
                    }
                }
            }

            return entity;
        }
        private string GetControlKPFormItemPasswordEntity(Column column)
        {
            string propertyConcat = String.Empty;
            KPFormItemPasswordEntity entity = column.EntityComponentForm as KPFormItemPasswordEntity;
            if (entity == null)
            {
                entity = new KPFormItemPasswordEntity()
                {
                    Title = GlobalizationLanguage.GetString("KPEntity_Title"),
                    IsRequired = !column.IsNullable
                };
            }

            var title = entity.Title;
            var isRequired = entity.IsRequired;
            var eventLostFocus = entity.KPEventTextLostFocus;

            if (!String.IsNullOrWhiteSpace(title))
                propertyConcat += String.Format(@" Title=""{0}""", title);
            if (isRequired)
                propertyConcat += String.Format(@" IsRequired=""{0}""", isRequired.ToString().ToLower());
            if (eventLostFocus)
                propertyConcat += String.Format(@" OnKPEventTextLostFocus=""{0}_KPEventTextLostFocus""", column.Name.GetFormattedText());

            return propertyConcat;
        }