Beispiel #1
0
 public WebMultipleValuesColumnFilter()
 {
     _storage                  = new ColumnFilterStorage();
     _storage.DataType         = typeof(Int64);
     _storage.AvailableFilters = ColumnFilterType.In | ColumnFilterType.Equal | ColumnFilterType.None;
     PanelHeight               = Unit.Pixel(380);
 }
        public override IMultipleValuesColumnFilter CreateMultipleValuesColumnFilter(ColumnFilterStorage storage)
        {
            WebMultipleValuesColumnFilter webMultipleValuesColumnFilter = new WebMultipleValuesColumnFilter();

            webMultipleValuesColumnFilter.SetStorage(storage);
            return(webMultipleValuesColumnFilter);
        }
Beispiel #3
0
        private void OnCheckBoxForFilterConditionOnCheckedChanged(object sender, EventArgs args)
        {
            var condition =
                tableDataSource.View.CustomConditions.FirstOrDefault(r => r.ColumnName == CheckedFilterCondition);

            if (condition == null)
            {
                return;
            }

            var control = (DropDownList)controls[0];
            var value   = control.SelectedValue;

            control.SelectedValue = null;

            condition.EmptyCondition = checkBoxForFilterCondition.Checked;
            control.DataBind();
            var item = control.Items.FindByValue(value);

            if (item != null)
            {
                control.SelectedValue = value;
                ColumnFilterStorage.SetValue(0, null);
                OnColumnFilterStorageChanged();
            }

            storageChanged = true;
        }
Beispiel #4
0
        public static Dictionary <string, object> CreateConstants(List <BaseReportCondition> conditions, List <List <BaseReportCondition> > circleFillConditions, bool addFilterType)
        {
            var contants = new Dictionary <string, object>();

            foreach (BaseReportCondition condition in conditions)
            {
                ColumnFilterStorage storage = condition.ColumnFilter.GetStorage();
                contants[storage.Name] = BuildConstants(condition, storage, addFilterType);
            }

            if (circleFillConditions != null)
            {
                var i = 0;
                foreach (List <BaseReportCondition> circleFillCondition in circleFillConditions)
                {
                    foreach (BaseReportCondition condition in circleFillCondition)
                    {
                        ColumnFilterStorage storage = condition.ColumnFilter.GetStorage();
                        if (i == 0)
                        {
                            contants.Add(storage.Name, new object[circleFillConditions.Count]);
                        }
                        var m = (object[])contants[storage.Name];
                        m[i] = BuildConstants(condition, storage, addFilterType);
                    }

                    i++;
                }
            }

            return(contants);
        }
        public void SetStorage(ColumnFilterStorage storage)
        {
            Data data = _values[storage.Name] as Data;

            if (data != null)
            {
                Boolean filterValid = true;

                if (!EnumHelper.Contains(data.filterType, storage.AvailableFilters))
                {
                    filterValid = false;
                }

                if (filterValid)
                {
                    for (int i = 0; i != data.values.Length; i++)
                    {
                        if (data.values[i] == null || data.values[i].GetType() != storage.DataType)
                        {
                            filterValid = false;
                            break;
                        }
                    }
                }

                Debug.Write(filterValid, "User filter configuration not valid");

                if (filterValid)
                {
                    storage.FilterType = data.filterType;
                    storage.Values     = data.values;
                }
            }
        }
        public override IColumnFilter CreateColumnFilter(ColumnFilterStorage storage)
        {
            ColumnFilter columnFilter = new ColumnFilter();

            columnFilter.SetStorage(storage);
            return(columnFilter);
        }
Beispiel #7
0
        private static object[] BuildConstants(BaseReportCondition condition, ColumnFilterStorage storage, bool addFilterType)
        {
            List <object> constants;

            if (storage.IsRefBound)
            {
                if (storage.FilterType.IsBinaryFilter())
                {
                    try
                    {
                        constants = new List <object>
                        {
                            condition.ColumnFilter.GetText(0), condition.ColumnFilter.GetText(1)
                        };
                    }
                    catch (NotImplementedException)
                    {
                        constants = new List <object> {
                            storage.Value1, storage.Value2
                        };
                    }
                }
                else
                {
                    try
                    {
                        constants = new List <object> {
                            condition.ColumnFilter.GetText(0)
                        };
                    }
                    catch (NotImplementedException)
                    {
                        constants = new List <object> {
                            storage.Value1
                        };
                    }
                }
            }
            else
            {
                constants = storage.FilterType.IsBinaryFilter()
                           ? new List <object> {
                    storage.Value1, storage.Value2
                }
                               : new List <object> {
                    storage.Value1
                };
            }

            if (addFilterType)
            {
                constants.Insert(0, storage.FilterType);
            }

            return(constants.ToArray());
        }
Beispiel #8
0
        /// <summary>
        /// Возвращает идентификаторы html-элементов, в которые осуществляется ввод данных.
        /// </summary>
        /// <returns></returns>
        public IEnumerable <DefaultFilterValues> GetInputElements()
        {
            List <DefaultFilterValues> list;

            this.EnsureChildControls();
            if (ColumnFilterStorage.DataType == typeof(DateTime) ||
                (ColumnFilterStorage.IsRefBound && ColumnFilterStorage.RefTableRolledIn))
            {
                list = controls
                       .OfType <IClientElementProvider>()
                       .SelectMany(r => r.GetInputElements())
                       .Select((r, index) => new DefaultFilterValues
                {
                    ClientId = r,
                    Value    = DefaultValues == null || DefaultValues.Length <= index
                                ? null
                                : DefaultValues[index],
                })
                       .ToList();
            }
            else
            {
                list = controls.Where(r => r != null)
                       .Select((r, index) => new DefaultFilterValues
                {
                    ClientId = r.ClientID,
                    Value    = DefaultValues == null || DefaultValues.Length <= index
                            ? null
                            : DefaultValues[index],
                })
                       .ToList();
            }

            if (DefaultFilterType != ColumnFilterType.NotSet)
            {
                list.Add(
                    new DefaultFilterValues
                {
                    ClientId = dropDownList.ClientID,
                    Value    = ((int)DefaultFilterType).ToString(),
                });
            }
            else
            {
                list.Add(
                    new DefaultFilterValues
                {
                    ClientId = dropDownList.ClientID,
                    Value    = ColumnFilterStorage.GetDefaultFilterTypesArray().Select(r => (int)r).Min().ToString(),
                });
            }

            return(list);
        }
        public void AddStorage(ColumnFilterStorage storage, string[] textValues)
        {
            var existValue = _values.ContainsKey(storage.Name) ? (Data)_values[storage.Name] : null;

            if (existValue == null ||
                (storage.Values != null && storage.Values.Any(r => r != null) &&
                 (storage.FilterType == ColumnFilterType.In ||
                  storage.FilterType != ColumnFilterType.In && storage.FilterType != ColumnFilterType.None)))
            {
                _values[storage.Name] = new Data(storage.Values, storage.FilterType, textValues);
            }
        }
Beispiel #10
0
        private void UpdateStorage()
        {
            if (ColumnFilterStorage == null || dropDownList == null || dropDownList.SelectedItem == null)
            {
                return;
            }
            ColumnFilterStorage.FilterType = (ColumnFilterType)Convert.ToInt64(dropDownList.SelectedItem.Value);

            Int32 controlsCount = 0;

            if (ColumnFilterStorage.FilterType == ColumnFilterType.Between ||
                ColumnFilterStorage.FilterType == ColumnFilterType.OutOf)
            {
                controlsCount = 2;
                filterRow.Cells[2].Style["display"] = "";
                if (filterRow.Cells.Count > 3)
                {
                    filterRow.Cells[3].Style["display"] = "";
                }
            }
            else if (ColumnFilterStorage.FilterType != ColumnFilterType.None)
            {
                controlsCount = 1;
                filterRow.Cells[2].Style["display"] = "";
                if (filterRow.Cells.Count > 3 && filterRow.Cells[3].ID != "fillEmpty")
                {
                    filterRow.Cells[2].Width            = Unit.Pixel((Int32)filterRow.Cells[3].Width.Value * 2 + 9);
                    filterRow.Cells[3].Style["display"] = "none";
                }
            }
            else
            {
                filterRow.Cells[2].Style["display"] = "none";
                if (filterRow.Cells.Count > 3 && filterRow.Cells[3].ID != "fillEmpty")
                {
                    filterRow.Cells[3].Style["display"] = "none";
                }
            }

            if (ColumnFilterStorage.FilterType == ColumnFilterType.ContainsWords)
            {
                ColumnFilterStorage.Value = (GetValue(0) ?? "").ToString();
            }
            else
            {
                for (int i = 0; i != controlsCount; i++)
                {
                    ColumnFilterStorage.SetValue(i, GetValue(i));
                }
            }

            OnColumnFilterStorageChanged();
        }
Beispiel #11
0
        /// <summary>
        /// Создание ColumnFilterStorage для выбора по текущему месяцу и году
        /// </summary>
        /// <param name="dataColumn">колонка</param>
        /// <returns>фильтр для колонки</returns>
        public static ColumnFilterStorage CreateFilterStorageOnCurrentMonth(DataColumn dataColumn)
        {
            var storageCaption          = (string)(DataSetResourceManager.GetColumnExtProperty(dataColumn, ColumnExtProperties.CAPTION));
            ColumnFilterStorage storage = null;

            if (dataColumn != null)
            {
                storage = new ColumnFilterStorage(dataColumn.ColumnName, storageCaption, typeof(DateTime), ColumnFilterType.Between, Convert.ToDateTime(GetIntervalDates().beginDate), Convert.ToDateTime(GetIntervalDates().endDate));
                storage.AvailableFilters = storage.GetDefaultFilterTypes();
            }
            return(storage);
        }
        private void AddColumnFilter(ColumnFilterStorage columnFilterStorage)
        {
            var id           = String.Format("{0}_ColumnFilterID", columnFilterStorage.Name.Replace(".", "_"));
            var columnFilter = new ColumnFilter
            {
                ID = id,
                PopupBehaviorParentNode = PopupBehaviorParentNode,
                SessionWorker           = view.SessionWorker,
                ColumnFilterStorage     = columnFilterStorage
            };

            filterPanel.Controls.Add(columnFilter);
            columnFilters.Add(columnFilter);
        }
        public void AddListStorage(ColumnFilterStorage storage, int index, string[] textValues)
        {
            Hashtable values;

            if (_valuesCircle.Count == index)
            {
                values = new Hashtable();
                _valuesCircle.Add(values);
            }
            else
            {
                values = _valuesCircle[index];
            }
            values.Add(storage.Name, new Data(storage.Values, storage.FilterType, textValues));
        }
Beispiel #14
0
 public void SetStorage(ColumnFilterStorage storage)
 {
     _storage = (ColumnFilterStorage)storage.Clone();
     OnColumnFilterStorageChanged();
     if (checkedIds != null)
     {
         if (_storage.Values == null || _storage.Values.Length == 0)
         {
             checkedIds.Value = "";
         }
         else
         {
             checkedIds.Value = string.Join(",", _storage.Values.Select(Convert.ToString).ToArray());
         }
     }
 }
        public void SetListStorage(ColumnFilterStorage storage, int index)
        {
            Data data = _valuesCircle[index][storage.Name] as Data;

            if (data != null)
            {
                if (data.values == null)
                {
                    storage.Values = new object[0];
                }
                else
                {
                    storage.Values = data.values;
                }
                storage.FilterType = data.filterType;
            }
        }
Beispiel #16
0
        public Boolean Validate()
        {
            var args = new ValidateEventArgs();

            ColumnFilterStorage.Validate(args);
            errorText = args.ErrorText;
            var eventArgs = new ValidateEventArgs();

            OnFilterValidate(eventArgs);
            if (string.IsNullOrEmpty(errorText))
            {
                errorText = eventArgs.ErrorText;
            }
            else
            {
                errorText += "\r\n" + eventArgs.ErrorText;
            }
            return(args.Valid && eventArgs.Valid);
        }
Beispiel #17
0
 protected override DataTable GetDataTable(ColumnFilterStorage storage)
 {
     return(DataSourceHelper.GetDataTable(storage.RefDataSource));
 }
Beispiel #18
0
        private void UpdateControls()
        {
            dropDownList.SelectedValue = Convert.ToInt64(ColumnFilterStorage.FilterType).ToString();

            Int32 controlsCount = 0;

            if (ColumnFilterStorage.FilterType == ColumnFilterType.Between ||
                ColumnFilterStorage.FilterType == ColumnFilterType.OutOf)
            {
                controlsCount = 2;
                filterRow.Cells[2].Style["display"] = "";
                if (filterRow.Cells.Count > 3)
                {
                    filterRow.Cells[3].Style["display"] = "";
                }
            }
            else if (ColumnFilterStorage.FilterType != ColumnFilterType.None)
            {
                controlsCount = 1;
                filterRow.Cells[2].Style["display"] = "";
                if (ColumnFilterStorage.DataType == typeof(String) && !ColumnFilterStorage.IsRefBound)
                {
                    filterRow.Cells[2].Width = Unit.Percentage(100);
                }
                else if (ColumnFilterStorage.DataType == typeof(DateTime))
                {
                    filterRow.Cells[2].Width = Unit.Pixel(110);
                    filterRow.Cells[3].Width = Unit.Pixel(110);
                }
                else if (filterRow.Cells.Count > 3 && filterRow.Cells[3].ID != "fillEmpty")
                {
                    filterRow.Cells[2].Width            = Unit.Pixel((Int32)filterRow.Cells[3].Width.Value * 2 + 9);
                    filterRow.Cells[3].Style["display"] = "none";
                }
            }
            else
            {
                filterRow.Cells[2].Style["display"] = "none";
                if (filterRow.Cells.Count > 3 && filterRow.Cells[3].ID != "fillEmpty")
                {
                    filterRow.Cells[3].Style["display"] = "none";
                }
            }

            if (ColumnFilterStorage.IsRefBound)
            {
                for (int i = 0; i != controlsCount; i++)
                {
                    if (ColumnFilterStorage.RefTableRolledIn)
                    {
                        ((LookupTextBox)controls[i]).Value = ColumnFilterStorage.GetValue(i);
                    }
                    else
                    {
                        var selectedValue = ColumnFilterStorage.GetValue(i);
                        var list          = ((DropDownList)controls[i]);
                        if (selectedValue != null)
                        {
                            var item = list.Items.FindByValue(Convert.ToString(selectedValue));
                            if (item != null)
                            {
                                list.SelectedValue = Convert.ToString(selectedValue);
                            }
                            else
                            {
                                ColumnFilterStorage.SetValue(i, null);
                                OnColumnFilterStorageChanged();
                            }
                        }
                    }
                }
            }
            else if (ColumnFilterStorage.DataType == typeof(Int64) ||
                     ColumnFilterStorage.DataType == typeof(Int32) ||
                     ColumnFilterStorage.DataType == typeof(Int16) ||
                     ColumnFilterStorage.DataType == typeof(Byte) ||
                     ColumnFilterStorage.DataType == typeof(Double) ||
                     ColumnFilterStorage.DataType == typeof(Decimal) ||
                     ColumnFilterStorage.DataType == typeof(Single) ||
                     ColumnFilterStorage.DataType == typeof(String))
            {
                for (int i = 0; i != controlsCount; i++)
                {
                    ((TextBox)controls[i]).Text = Convert.ToString(ColumnFilterStorage.GetValue(i));
                }
            }
            else if (ColumnFilterStorage.DataType == typeof(DateTime))
            {
                for (int i = 0; i != controlsCount; i++)
                {
                    ((DatePicker)controls[i]).Date = ColumnFilterStorage.GetValue(i);
                }
            }
            else if (ColumnFilterStorage.DataType == typeof(Boolean))
            {
                for (int i = 0; i != controlsCount; i++)
                {
                    ((DropDownList)controls[i]).SelectedValue = Convert.ToString(ColumnFilterStorage.GetValue(i)).ToLower();
                }
            }

            foreach (var webControl in controls.Where(r => r != null))
            {
                var property = TypeDescriptor.GetProperties(webControl).Find("AutoPostBack", false);
                property?.SetValue(webControl, postBack);
            }
        }
Beispiel #19
0
 public void SetStorage(ColumnFilterStorage storage)
 {
     ColumnFilterStorage = storage;
     storageChanged      = true;
     OnColumnFilterStorageChanged();
 }
 public void AddStorage(ColumnFilterStorage storage)
 {
     _values.Add(storage.Name, new Data(storage.Values, storage.FilterType));
 }