protected override void OnPreRender(EventArgs e) { base.OnPreRender(e); if (IsPostBack) { Search.SearchParameter profileParameter = this.SearchType.Parameters.OfType <Search.SearchParameter>().Where(param => param.FieldType.Equals("profile", StringComparison.InvariantCultureIgnoreCase)).FirstOrDefault(); if (profileParameter != null) { setProfileFieldsStatus(profileParameter); } } }
private string ConstuctProfileCondition(IEnumerable <HtmlGenericControl> criteriaRows, Search.SearchParameter parameter, out string searchFieldName) { searchFieldName = parameter.FieldName; HtmlInputHidden hidSearchField = criteriaRows.Select(row => row.FindControl(parameter.FieldName + "_SearchCol")).OfType <HtmlInputHidden>().FirstOrDefault(); if (hidSearchField != null) { searchFieldName = hidSearchField.Value; if (!string.IsNullOrEmpty(searchFieldName)) { parameter.Condition = "CONTAINS"; string condition = ""; ListField level1 = criteriaRows.Select(row => row.FindControl(parameter.FieldName + "_1")).OfType <ListField>().FirstOrDefault(); if (level1 != null && !string.IsNullOrEmpty(level1.FieldValue)) { condition = "|" + level1.FieldValue + "|"; // Do Html format, e.g. @amp; for & ?? ListField level2 = criteriaRows.Select(row => row.FindControl(parameter.FieldName + "_2")).OfType <ListField>().FirstOrDefault(); if (level2 != null && !string.IsNullOrEmpty(level2.FieldValue)) { condition += level2.FieldValue + "|"; ListField level3 = criteriaRows.Select(row => row.FindControl(parameter.FieldName + "_3")).OfType <ListField>().FirstOrDefault(); if (level3 != null && !string.IsNullOrEmpty(level3.FieldValue)) { condition += level3.FieldValue + "|"; } } return(condition); } } } return(null); }
private void setProfileFieldsStatus(Search.SearchParameter parameter) { ListField paramTypeField = SearchCriteria.Controls.OfType <HtmlGenericControl>().Select(row => row.FindControl(parameter.FieldName + "_0")).OfType <ListField>().FirstOrDefault(); if (paramTypeField != null && !string.IsNullOrEmpty(paramTypeField.FieldValue)) { IEnumerable <ListField> lists = paramTypeField.Parent.Controls.OfType <ListField>(); IEnumerable <HtmlInputHidden> hids = paramTypeField.Parent.Controls.OfType <HtmlInputHidden>(); ListField level1Field = lists.Where(l => l.ID.EndsWith("_1")).FirstOrDefault(); Searches.SearchParameter[] procParams = ((SearchModel)level1Field.DataSource).Parameters; HtmlInputHidden hidExtraWhere = hids.Where(h => h.ID.EndsWith("_ExtraWhere")).FirstOrDefault(); level1Field.Enabled = true; level1Field.ClientSideInitialise = true; Searches.SearchParameter paramType = procParams.FirstOrDefault(p => p.Parameter == "@PA_PROFILE_TYPE"); if (paramType != null) { paramType.Value = paramTypeField.FieldValue; } if (!string.IsNullOrEmpty(hidExtraWhere.Value)) { paramType = procParams.FirstOrDefault(p => p.Parameter == "@PA_EXTRA_WHERE"); if (paramType != null) { paramType.Value = hidExtraWhere.Value; } } if (!string.IsNullOrEmpty(level1Field.FieldValue)) { ListField level2Field = lists.Where(l => l.ID.EndsWith("_2")).FirstOrDefault(); procParams = ((SearchModel)level2Field.DataSource).Parameters; HtmlInputHidden hidLevelExists = hids.Where(h => h.ID.EndsWith("_Level2Exists")).FirstOrDefault(); level2Field.Enabled = (hidLevelExists == null || hidLevelExists.Value != "0"); if (level2Field.Enabled) { level2Field.ClientSideInitialise = true; } paramType = procParams.FirstOrDefault(p => p.Parameter == "@PA_PROFILE_TYPE"); if (paramType != null) { paramType.Value = paramTypeField.FieldValue; } if (!string.IsNullOrEmpty(hidExtraWhere.Value)) { paramType = procParams.FirstOrDefault(p => p.Parameter == "@PA_EXTRA_WHERE"); if (paramType != null) { paramType.Value = hidExtraWhere.Value; } } paramType = procParams.FirstOrDefault(p => p.Parameter == "@PA_LEVEL_1"); if (paramType != null) { paramType.Value = level1Field.FieldValue; } if (!string.IsNullOrEmpty(level2Field.FieldValue)) { ListField level3Field = lists.Where(l => l.ID.EndsWith("_3")).FirstOrDefault(); procParams = ((SearchModel)level3Field.DataSource).Parameters; hidLevelExists = hids.Where(h => h.ID.EndsWith("_Level3Exists")).FirstOrDefault(); level3Field.Enabled = (hidLevelExists == null || hidLevelExists.Value != "0"); if (level3Field.Enabled) { level3Field.ClientSideInitialise = true; } paramType = procParams.FirstOrDefault(p => p.Parameter == "@PA_PROFILE_TYPE"); if (paramType != null) { paramType.Value = paramTypeField.FieldValue; } if (!string.IsNullOrEmpty(hidExtraWhere.Value)) { paramType = procParams.FirstOrDefault(p => p.Parameter == "@PA_EXTRA_WHERE"); if (paramType != null) { paramType.Value = hidExtraWhere.Value; } } paramType = procParams.FirstOrDefault(p => p.Parameter == "@PA_LEVEL_1"); if (paramType != null) { paramType.Value = level1Field.FieldValue; } paramType = procParams.FirstOrDefault(p => p.Parameter == "@PA_LEVEL_2"); if (paramType != null) { paramType.Value = level2Field.FieldValue; } } } } }
private void InitialiseProfileFields(HtmlGenericControl row, Search.SearchParameter parameter) { if (!String.IsNullOrEmpty(parameter.ListData)) { JavaScriptSerializer serializer = new JavaScriptSerializer(); Dictionary <String, Object> jsonData = serializer.Deserialize <Dictionary <String, Object> >(parameter.ListData); if (jsonData.Keys.Count >= 1 && String.Equals(jsonData.Keys.ElementAt(0), "PROFILES", StringComparison.OrdinalIgnoreCase)) { ArrayList profileTypes = jsonData.Values.ElementAt(0) as ArrayList; if (profileTypes != null && profileTypes.Count > 0) { ListField paramTypeField = new ListField(); paramTypeField.ID = parameter.FieldName + "_0"; row.Controls.Add(paramTypeField); HtmlInputHidden hidProfSearchField = new HtmlInputHidden(); hidProfSearchField.ID = parameter.FieldName + "_SearchCol"; row.Controls.Add(hidProfSearchField); HtmlInputHidden hidProfExtraWhere = new HtmlInputHidden(); hidProfExtraWhere.ID = parameter.FieldName + "_ExtraWhere"; row.Controls.Add(hidProfExtraWhere); HtmlInputHidden hidProfLevel2Exists = new HtmlInputHidden(); hidProfLevel2Exists.ID = parameter.FieldName + "_Level2Exists"; row.Controls.Add(hidProfLevel2Exists); HtmlInputHidden hidProfLevel3Exists = new HtmlInputHidden(); hidProfLevel3Exists.ID = parameter.FieldName + "_Level3Exists"; row.Controls.Add(hidProfLevel3Exists); paramTypeField.ClientOnChange = string.Format("if (typeof ({2}) != 'undefined') {{ setNextProfileField({0}, '{1}', {2}, '{3}', '{4}'); }}", 0, paramTypeField.ClientID, paramTypeField.ClientID.Substring(0, paramTypeField.ClientID.Length - 1) + "1", // The client ID of the next list, passed without quotes as a variable, to get the instance of consensus.web.list, see ListBase hidProfSearchField.ClientID, hidProfExtraWhere.ClientID); paramTypeField.LabelText = parameter.CustomLabel.TrimOrNullify() ?? parameter.DefaultLabel; paramTypeField.CssClass += " col-md-3"; List <object> profileTypeItems = new List <object>(); foreach (IDictionary <string, object> profileType in profileTypes) { object item = new { Text = profileType.ContainsKey("name") ? profileType["name"].ToString() : "", Value = profileType.ContainsKey("profileField") ? profileType["profileField"].ToString() : "", SearchField = profileType.ContainsKey("searchField") ? profileType["searchField"].ToString() : "", ExtraWhere = profileType.ContainsKey("extraWhere") ? profileType["extraWhere"].ToString() : "" }; profileTypeItems.Add(item); } paramTypeField.DisplayMember = "Text"; paramTypeField.ValueMember = "Value"; if (paramTypeField.Attributes == null) { paramTypeField.Attributes = new List <ListAttribute>(); } paramTypeField.Attributes.Add(new ListAttribute() { Name = "search-field", Value = "SearchField" }); paramTypeField.Attributes.Add(new ListAttribute() { Name = "extra-where", Value = "ExtraWhere" }); paramTypeField.DataSource = profileTypeItems; for (var i = 1; i <= 3; i++) // Then we create three more interdependent dependent list controls for the three levels. { ListField listField = new ListField(); listField.ID = parameter.FieldName + "_" + i.ToString(); row.Controls.Add(listField); listField.Enabled = false; listField.ClientSideRefresh = true; ISearchParameterable searchDef = Searches.Search.Create(SearchTypes.SearchProfileSearchOptions) .AddParameter("@PA_PROFILE_TYPE", "") .AddParameter("@PA_EXTRA_WHERE", ""); if (i >= 2) { searchDef = searchDef.AddParameter("@PA_LEVEL_1", ""); } if (i == 3) { searchDef = searchDef.AddParameter("@PA_LEVEL_2", ""); } if (i < 3) { listField.ClientOnChange = string.Format("if (typeof ({2}) != 'undefined') {{ setNextProfileField({0}, '{1}', {2}, '', '', '{3}', '{4}'); }}", i, listField.ClientID, listField.ClientID.Substring(0, listField.ClientID.Length - 1) + (i + 1).ToString(), hidProfLevel2Exists.ClientID, hidProfLevel3Exists.ClientID); } listField.DisplayMember = "PROFILE_DESC"; if (listField.Attributes == null) { listField.Attributes = new List <ListAttribute>(); } listField.Attributes.Add(new ListAttribute() { Name = "next-exists", Value = "NEXT_EXISTS" }); listField.DataSource = searchDef; listField.LabelText = "Level " + i.ToString(); //listField.DataBoundValue = parameter.FieldName; listField.CssClass += " col-md-3"; } } } } }