Ejemplo n.º 1
0
        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);
                }
            }
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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;
                        }
                    }
                }
            }
        }
Ejemplo n.º 4
0
        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";
                        }
                    }
                }
            }
        }