public virtual Terrasoft.UI.WebControls.Controls.DataSourceFilterCollection CreateFilter(Terrasoft.UI.WebControls.Controls.DataSource detailDataSource, Guid solutionId, UserConnection userConnection)
        {
            var detailSchema = detailDataSource.Schema;

            Terrasoft.UI.WebControls.Utilities.EntityDataSourceUtilities.InitializeAutoDefStructure(detailDataSource as Terrasoft.UI.WebControls.Controls.EntityDataSource);
            Terrasoft.UI.WebControls.Controls.DataSourceStructure structure = detailDataSource.CurrentStructure;
            var filterLeftExpressions = FilterLeftExpressions as Array;

            if (filterLeftExpressions == null || filterLeftExpressions.Length == 0)
            {
                return(null);
            }
            Terrasoft.UI.WebControls.Controls.DataSourceFilterCollection filters = structure.CreateFiltersGroup(FilterName, LogicalOperationStrict.Or);
            foreach (string expression in filterLeftExpressions)
            {
                if (expression == null)
                {
                    continue;
                }
                var objectParams = GetFilterRightValue(userConnection) as object[];
                if (objectParams != null)
                {
                    filters.Add(
                        structure.CreateFilterWithParameters(detailSchema, Terrasoft.Core.Entities.FilterComparisonType.Equal,
                                                             expression, objectParams));
                }
                else
                {
                    filters.Add(
                        structure.CreateFilterWithParameters(detailSchema, Terrasoft.Core.Entities.FilterComparisonType.Equal,
                                                             expression, GetFilterRightValue(userConnection)));
                }
            }
            return(filters);
        }
Exemplo n.º 2
0
        public override void BaseApplyModuleFilters()
        {
            var pageInstance = Page.Grid.PageInstance as Terrasoft.WebApp.BaseGridPageSchemaUserControl;
            var dataSource   = pageInstance.DataSource;

            if (!IsRootFolder && FolderId != Guid.Empty)
            {
                var  folderInfo          = GetFolderInfo();
                Guid dynamicFolderTypeId = new Guid("65CA0946-0084-4874-B117-C13199AF3B95");
                if (folderInfo == null || DBNull.Value.Equals(folderInfo[0]) || !folderInfo.Length.Equals(2) || !(new Guid(folderInfo[0].ToString())).Equals(dynamicFolderTypeId))
                {
                    var folderEntitySchema = dataSource.Schema;
                    SetDetailFilter.FilterName            = "FolderFilter";
                    SetDetailFilter.FilterLeftExpressions = new  string[] { "SysFolder" };
                    SetDetailFilter.FilterRightValue      = FolderId;
                    var oldDataSourceFolderFilter = dataSource.CurrentStructure.Filters.FindByName("FolderFilter");
                    if (oldDataSourceFolderFilter != null)
                    {
                        dataSource.CurrentStructure.Filters.Remove(oldDataSourceFolderFilter);
                    }
                    var filter = SetDetailFilter.CreateFilter(dataSource, Guid.Empty, null);
                    dataSource.CurrentStructure.Filters.Add(filter);
                }
            }
            if (IsRootFolder)
            {
                var oldDataSourceFolderFilter = dataSource.CurrentStructure.Filters.FindByName("FolderFilter");
                if (oldDataSourceFolderFilter != null)
                {
                    dataSource.CurrentStructure.Filters.Remove(oldDataSourceFolderFilter);
                }
            }
            pageInstance.Process.SetPropertyValue("SelectedFolderId", FolderId);
            var primaryColumnName = dataSource.Schema.PrimaryColumn.Name;
            var structure         = dataSource.CurrentStructure;

            Terrasoft.UI.WebControls.Controls.DataSourceFilterCollection filters = null;
            string codeName = "CustomSettingsFilter";
            var    enableContextHelpSysSettingUId = new Guid("D4DF3F32-F46B-1410-D696-485B39C17F9B");
            var    oldFilters = structure.Filters.FindByName(codeName);

            if (oldFilters != null)
            {
                structure.Filters.Remove(oldFilters);
            }
            filters = structure.CreateFiltersGroup(codeName, LogicalOperationStrict.And);
            filters.Add(structure.CreateFilterWithParameters(dataSource.Schema, Terrasoft.Core.Entities.FilterComparisonType.NotEqual,
                                                             primaryColumnName, enableContextHelpSysSettingUId));
            filters.Add(structure.CreateFilterWithParameters(dataSource.Schema, Terrasoft.Core.Entities.FilterComparisonType.Equal,
                                                             "IsPersonal", new object[] { false }));
            structure.Filters.Add(filters);
        }