private void SetValues() { AdvancedSearch.Manager m = Manager; m.ClearSelectedValues(); AdvancedSearch.Field field; foreach (var criteria in SelectedSearchFields.Where(o => o.fieldDisplayName != "")) // Eliminate dummy criteria needed by datalist { field = m.Fields.FirstOrDefault(o => o.DisplayName == criteria.fieldDisplayName); var newValue = new AdvancedSearch.SelectedValue(); newValue.Operator = field.FieldType.Operators.FirstOrDefault(o => o.DisplayName == criteria.operatorDisplayName); if (field.FieldType.Type == AdvancedSearch.Enums.FieldTypeName.KeyValue) { newValue.Value = criteria.UserFriendlyValue; } else { newValue.Value = criteria.value; } field.SelectedValues.Add(newValue); } if (rblAndOr.SelectedValue == "AND") { Manager.SetFilterType(AdvancedSearch.Enums.FilterType.AND); } else { Manager.SetFilterType(AdvancedSearch.Enums.FilterType.OR); } }
static void Main(string[] args) { // Create advanced search for Application Details string conStr = ConfigurationManager.ConnectionStrings["ConStr"].ConnectionString; AdvancedSearch.Manager m = new AdvancedSearch.Manager(conStr, "App"); string selectClause = @"SELECT [App].[Name] ,[App].[BuildNr] ,[App].[Version] ,[App].[Deployed] ,[App].[DocumentId]"; // string fromClause = @"FROM [App] // LEFT JOIN [Document] on [App].[DocumentId] = [Document].[Id]"; m.SetSelectClause(selectClause); // m.SetFromClause(fromClause); // Create simple FieldTypes (such as Text, Number, Boolean) m.Fields.Add(new AdvancedSearch.Field("Application Name", "Name", new AdvancedSearch.TextType())); m.Fields.Add(new AdvancedSearch.Field("Build Number", "BuildNr", new AdvancedSearch.Number())); m.Fields.Add(new AdvancedSearch.Field("Version", "Version", new AdvancedSearch.Number())); m.Fields.Add(new AdvancedSearch.Field("Is deployed?", "Deployed", new AdvancedSearch.BooleanType())); // Create Complex FieldTypes (such as KeyValue (used by dropdownlists)) string keyValueScript = @"SELECT Id, DocumentName From Document Where Deleted = 0 OR Deleted IS NULL"; m.Fields.Add(new AdvancedSearch.Field("Document name", "DocumentId", new AdvancedSearch.KeyValueType(keyValueScript))); keyValueScript = @"SELECT [Id], [Name] From KeyUser"; m.Fields.Add(new AdvancedSearch.Field("Keyuser name", "Name", new AdvancedSearch.KeyValueType(keyValueScript), "ku", "LEFT JOIN [KeyUser] as [ku] on [App].Id = [ku].[AppId]")); keyValueScript = @"SELECT [Id], [Name] From Technology WHERE Deleted = 0 OR DELETED IS NULL"; m.Fields.Add(new AdvancedSearch.Field("Technology", "Name", new AdvancedSearch.KeyValueType(keyValueScript), "Tech", @"left join [App_Technology] on [App_Technology].AppId = [App].[Id] AND ( [App_Technology].Deleted IS NULL OR [App_Technology].Deleted = 0 ) left join [Technology] as [Tech] on [Tech].Id = [App_Technology].TechnologyId")); // Initialize Complex FieldTypes. This means complex FieldTypes will get data from databases or executes other logic. m.InitializeComplexFields(); // Set values var field = m.Fields.FirstOrDefault(o => o.DisplayName == "Application Name"); var oper = field.FieldType.DefaultOperator; field.SelectedValues.Add(new AdvancedSearch.SelectedValue() { Operator = oper, Value = "test" }); field = m.Fields.FirstOrDefault(o => o.DisplayName == "Build Number"); oper = field.FieldType.DefaultOperator; field.SelectedValues.Add(new AdvancedSearch.SelectedValue() { Operator = oper, Value = "1" }); field = m.Fields.FirstOrDefault(o => o.DisplayName == "Version"); oper = field.FieldType.DefaultOperator; field.SelectedValues.Add(new AdvancedSearch.SelectedValue() { Operator = oper, Value = "1.1" }); field = m.Fields.FirstOrDefault(o => o.DisplayName == "Is deployed?"); oper = field.FieldType.DefaultOperator; field.SelectedValues.Add(new AdvancedSearch.SelectedValue() { Operator = oper, Value = "true" }); field = m.Fields.FirstOrDefault(o => o.DisplayName == "Keyuser name"); oper = field.FieldType.DefaultOperator; field.SelectedValues.Add(new AdvancedSearch.SelectedValue() { Operator = oper, Value = "peter" }); field = m.Fields.FirstOrDefault(o => o.DisplayName == "Document name"); oper = field.FieldType.DefaultOperator; field.SelectedValues.Add(new AdvancedSearch.SelectedValue() { Operator = oper, Value = "2" }); field = m.Fields.FirstOrDefault(o => o.DisplayName == "Technology"); oper = field.FieldType.DefaultOperator; field.SelectedValues.Add(new AdvancedSearch.SelectedValue() { Operator = oper, Value = "IIS" }); m.SetFilterType(AdvancedSearch.Enums.FilterType.AND); var result = m.CreateQuery(); }
private void SetSearchFields() { // Create advanced search for Application Details string conStr = ConfigurationManager.ConnectionStrings["ConStr"].ConnectionString; Manager = new AdvancedSearch.Manager(conStr, "App"); AdvancedSearch.Manager m = Manager; string selectClause = @"SELECT [App].[Name] ,[App].[BuildNr] ,[App].[Version] ,[App].[Deployed] ,[App].[DocumentId]"; // string fromClause = @"FROM [App] // LEFT JOIN [Document] on [App].[DocumentId] = [Document].[Id]"; m.SetSelectClause(selectClause); // m.SetFromClause(fromClause); // Create simple FieldTypes (such as Text, Number, Boolean) m.Fields.Add(new AdvancedSearch.Field("Application Name", "Name", new AdvancedSearch.TextType())); m.Fields.Add(new AdvancedSearch.Field("Build Number", "BuildNr", new AdvancedSearch.Number())); m.Fields.Add(new AdvancedSearch.Field("Version", "Version", new AdvancedSearch.Number())); m.Fields.Add(new AdvancedSearch.Field("Is deployed?", "Deployed", new AdvancedSearch.BooleanType())); // Create Complex FieldTypes (such as KeyValue (used by dropdownlists)) string keyValueScript = @"SELECT Id, DocumentName From Document Where Deleted = 0 OR Deleted IS NULL"; m.Fields.Add(new AdvancedSearch.Field("Document name", "DocumentId", new AdvancedSearch.KeyValueType(keyValueScript))); keyValueScript = @"SELECT [Id], [Name] From KeyUser"; m.Fields.Add(new AdvancedSearch.Field("Keyuser name", "Name", new AdvancedSearch.KeyValueType(keyValueScript), "ku", "LEFT JOIN [KeyUser] as [ku] on [App].Id = [ku].[AppId]")); keyValueScript = @"SELECT [Id], [Name] From Technology WHERE Deleted = 0 OR DELETED IS NULL"; m.Fields.Add(new AdvancedSearch.Field("Technology", "Name", new AdvancedSearch.KeyValueType(keyValueScript), "Tech", @"left join [App_Technology] on [App_Technology].AppId = [App].[Id] AND ( [App_Technology].Deleted IS NULL OR [App_Technology].Deleted = 0 ) left join [Technology] as [Tech] on [Tech].Id = [App_Technology].TechnologyId")); // Initialize Complex FieldTypes. This means complex FieldTypes will get data from databases or executes other logic. m.InitializeComplexFields(); }