Пример #1
0
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);

            TableDataSourceView view = (TableDataSourceView)GetData();

            view.FillType = TableDataSourceFillType.Never;

            String tableCaption           = (String)(DataSetResourceManager.GetTableExtProperty(view.Table, TableExtProperties.CAPTION) ?? view.Table.TableName);
            String SSelectFromDBDirectory = LookupControlsResources.SSelectFromDBDirectory;

            popupControl.HeaderText = String.Format("{0} \"{1}\"", SSelectFromDBDirectory, tableCaption);

            if (AllowNullButton)
            {
                nullButton.Style["display"] = "";
            }
            else
            {
                nullButton.Style["display"] = "none";
            }

            // Because we don't use ViewState in GridView of LookupTable we have to
            // regenerate DataKeyNames from conrols where we stored this values earlier
            dataTextField       = DataTextField;
            dataValueField      = DataValueField;
            dataCodeField       = DataCodeField;
            dataDisableRowField = DataDisableRowField;
            UpdateDataKeyNames();
        }
Пример #2
0
        public void RowChanged(DataTable table, DataColumnCollection columns, object[] oldValues, object[] newValues)
        {
            Boolean isRowEntityFound = false;
            String  rowId            = null;

            for (int i = 0; i < columns.Count; i++)
            {
                var isRowEntity =
                    (Boolean)
                    (DataSetResourceManager.GetColumnExtProperty(columns[i], ColumnExtProperties.LOG_ENTITY) ?? false);
                if (isRowEntity)
                {
                    rowId            = Convert.ToString(oldValues[i]);
                    isRowEntityFound = true;
                }
            }

            if (!isRowEntityFound)
            {
                DataColumn identityColumn = columns["id"];
                if (identityColumn != null)
                {
                    rowId = Convert.ToString(oldValues[identityColumn.Ordinal]);
                }
            }

            String tableCaption = DataSetResourceManager.GetTableExtProperty(table, TableExtProperties.CAPTION,
                                                                             table.TableName);

            String rowEntity = String.Format("{0}, {1}", tableCaption, rowId);

            for (int i = 0; i < columns.Count; i++)
            {
                var logEnabled =
                    (Boolean)
                    (DataSetResourceManager.GetColumnExtProperty(columns[i], ColumnExtProperties.LOG_ENABLED) ?? true);
                object oldValue;
                object newValue;
                if (columns[i].MaxLength < 255)
                {
                    oldValue = oldValues[i];
                    newValue = newValues[i];
                }
                else
                {
                    oldValue = Resources.SViewNotAvailable;
                    newValue = Resources.SViewNotAvailable;
                }
                if (logEnabled && !oldValue.Equals(newValue))
                {
                    var caption =
                        (String)
                        (DataSetResourceManager.GetColumnExtProperty(columns[i], ColumnExtProperties.CAPTION) ??
                         columns[i].Caption);
                    FieldChanged(table.TableName, rowEntity, caption, oldValue, newValue);
                }
            }
        }
Пример #3
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);
        }
Пример #4
0
        public string GetText(int index)
        {
            StringBuilder text = new StringBuilder();

            foreach (DataColumn dc in tableDataSource.Table.Columns)
            {
                Boolean showColumn = (Boolean)(DataSetResourceManager.GetColumnExtProperty(dc, ColumnExtProperties.VISIBLE) ?? false);
                if (showColumn)
                {
                    String columnCaption = (String)(DataSetResourceManager.GetColumnExtProperty(dc, ColumnExtProperties.CAPTION) ?? dc.Caption);
                    text.Append(columnCaption + ": " + tableDataSource.View.DataView[index].Row[dc] + "; ");
                }
            }

            return(text.Remove(text.Length - 1, 1).ToString());
        }
Пример #5
0
        protected override void CreateChildControls()
        {
            base.CreateChildControls();
            bool initStorage = false;

            // HiddenField
            hiddenField = new HiddenField();
            Controls.Add(hiddenField);

            btnFullBriefView = new Image();
            Controls.Add(btnFullBriefView);
            btnFullBriefView.Style["position"] = "absolute";
            btnFullBriefView.Style["right"]    = "25px";
            btnFullBriefView.Style["top"]      = "0px";
            btnFullBriefView.ImageUrl          = defaultFullView ? BriefViewImageUrl : FullViewImageUrl;
            btnFullBriefView.Style["display"]  = showFullBriefViewButton ? "" : "none";
            btnFullBriefView.Style["cursor"]   = "hand";

            UpdatePanel buttonUpdatePanel = new UpdatePanel();

            buttonUpdatePanel.ID         = "buttonUpdatePanelID";
            buttonUpdatePanel.UpdateMode = UpdatePanelUpdateMode.Conditional;
            Controls.AddAt(1, buttonUpdatePanel);

            btnSaveFiltersState    = new ImageButton();
            btnSaveFiltersState.ID = "btnSaveFiltersStateID";
            buttonUpdatePanel.ContentTemplateContainer.Controls.Add(btnSaveFiltersState);
            btnSaveFiltersState.Style["position"] = "absolute";
            btnSaveFiltersState.Style["right"]    = "50px";
            btnSaveFiltersState.Style["top"]      = "0px";
            btnSaveFiltersState.Style["display"]  = "";
            btnSaveFiltersState.ImageUrl          = SaveFilterStateImageUrl;
            btnSaveFiltersState.Style["cursor"]   = "hand";
            btnSaveFiltersState.Click            += BtnSaveFiltersState_OnClick;
            btnSaveFiltersState.ToolTip           = LookupControlsResources.SSaveFiltersState;

            // Get DataTable
            view      = (TableDataSourceView)GetData();
            dataTable = view.Table;

            // Ensure ColumnFilterStorages
            if (ColumnFilterStorages == null)
            {
                initStorage = true;
                ColumnFilterStorageList columnFilterStorages = new ColumnFilterStorageList();
                foreach (DataColumn dataColumn in dataTable.Columns)
                {
                    Boolean showInFilter   = (Boolean)(DataSetResourceManager.GetColumnExtProperty(dataColumn, ColumnExtProperties.SHOW_IN_FILTER) ?? false);
                    var     visibleCulture = (string)DataSetResourceManager.GetColumnExtProperty(dataColumn, ColumnExtProperties.SHOW_IN_FILTER_CULTURE);
                    if (!string.IsNullOrEmpty(visibleCulture))
                    {
                        showInFilter = showInFilter && visibleCulture.Equals(CultureInfo.CurrentUICulture.Name, StringComparison.CurrentCultureIgnoreCase);
                    }

                    if (showInFilter)
                    {
                        ColumnFilterStorage columnFilterStorage = new ColumnFilterStorage();

                        columnFilterStorage.Name            = dataColumn.ColumnName;
                        columnFilterStorage.Caption         = (String)(DataSetResourceManager.GetColumnExtProperty(dataColumn, ColumnExtProperties.CAPTION) ?? dataColumn.Caption);
                        columnFilterStorage.DataType        = dataColumn.DataType;
                        columnFilterStorage.DbType          = (NullableHelper.CreateNullable <DbType>(DataSetResourceManager.GetColumnExtProperty(dataColumn, ColumnExtProperties.DB_TYPE)));
                        columnFilterStorage.FilterType      = ColumnFilterType.None;
                        columnFilterStorage.IsRefBound      = (Boolean)(DataSetResourceManager.GetColumnExtProperty(dataColumn, ColumnExtProperties.FILTER_COLUMN_IS_REF) ?? false);
                        columnFilterStorage.HideInBriefView = (Boolean)(DataSetResourceManager.GetColumnExtProperty(dataColumn, ColumnExtProperties.FILTER_HIDE_IN_BRIEF_VIEW) ?? false);
                        if (columnFilterStorage.IsRefBound)
                        {
                            DataTable filterRefTable = (DataTable)DataSetResourceManager.GetColumnExtProperty(dataColumn, ColumnExtProperties.FILTER_REF_TABLE);
                            columnFilterStorage.TableName        = filterRefTable.TableName;
                            columnFilterStorage.RefTableRolledIn = (Boolean)(DataSetResourceManager.GetTableExtProperty(filterRefTable, TableExtProperties.ROLLED_IN) ?? false);
                            columnFilterStorage.DisplayColumn    = DataSetResourceManager.GetColumnExtProperty(dataColumn, ColumnExtProperties.FILTER_REF_DISPLAY_COLUMN) as String;
                            columnFilterStorage.ValueColumn      = DataSetResourceManager.GetColumnExtProperty(dataColumn, ColumnExtProperties.FILTER_REF_VALUE_COLUMN) as String;
                        }
                        columnFilterStorage.AvailableFilters = columnFilterStorage.GetDefaultFilterTypes();
                        columnFilterStorage.DateTimeFormat   = (String)(DataSetResourceManager.GetColumnExtProperty(dataColumn, ColumnExtProperties.FILTER_DATE_TIME_FORMAT));

                        columnFilterStorages.Add(columnFilterStorage);
                    }
                }
                SetColumnFilterStorages(columnFilterStorages);
            }

            if (view.SessionWorker == null)
            {
                throw new Exception("SessionWorker cannot be null");
            }

            // Get data source from session in case when column refers to another table
            DataSet dataSet = view.SessionWorker.Object as DataSet;

            if (dataSet == null)
            {
                throw new Exception("SessionWorker.Object is not DataSet or null");
            }

            foreach (ColumnFilterStorage storage in ColumnFilterStorages)
            {
                if (storage.IsRefBound)
                {
                    storage.RefDataSource = dataSet.Tables[storage.TableName];
                }
            }

            if (ViewState["FiltersStateLoaded"] == null)
            {
                ViewState["FiltersStateLoaded"] = true;
                LoadFiltersState();
            }

            // Filter panel
            filterPanel    = new Panel();
            filterPanel.ID = "filterPanelID";
            Controls.Add(filterPanel);
            filterPanel.Height     = filterHeight;
            filterPanel.ScrollBars = ScrollBars.Auto;

            // ColumnFilters
            columnFilters = new List <ColumnFilter>();


            var args = new ColumnFilterListCreatingEventArgs();

            OnColumnFilterListCreating(args);
            if (initStorage)
            {
                ColumnFilterStorages.AddRange(args.ListStorages);
            }
            foreach (ColumnFilterStorage columnFilterStorage in ColumnFilterStorages)
            {
                if (args.ListStorages.Where(s => s.Name.Equals(columnFilterStorage.Name)).Count() > 0)
                {
                    AddColumnFilter(columnFilterStorage);
                    continue;
                }
                string[] rights = (string[])(DataSetResourceManager.GetColumnExtProperty(
                                                 dataTable.Columns[columnFilterStorage.Name],
                                                 ColumnExtProperties.FILTER_RIGHTS) ?? new string[] { });
                Boolean userHasRights = true;
                foreach (string right in rights)
                {
                    userHasRights = UserRoles.IsInRole(Convert.ToString(right));
                    if (!userHasRights)
                    {
                        break;
                    }
                }

                if (userHasRights)
                {
                    AddColumnFilter(columnFilterStorage);
                }
            }
        }
Пример #6
0
        private void LoadFiltersState()
        {
            var sid = GetSidBytes();
            // Loading user dependend filters state settings
            // In case there is no user setting apply default settings
            StorageValues storageValues = StorageValues.GetStorageValues(string.Format("{0}_{1}", Page.AppRelativeVirtualPath, ClientID), sid);

            if (storageValues != null)
            {
                foreach (ColumnFilterStorage storage in ColumnFilterStorages)
                {
                    storageValues.SetStorage(storage);
                }
            }
            else
            {
                WebInitializer.Initialize();
                foreach (ColumnFilterStorage storage in ColumnFilterStorages)
                {
                    ColumnFilterType columnFilterType = (ColumnFilterType)(DataSetResourceManager.GetColumnExtProperty(
                                                                               dataTable.Columns[storage.Name], ColumnExtProperties.FILTER_DEFAULT_CONDITION) ?? ColumnFilterType.None);
                    if (columnFilterType != ColumnFilterType.None)
                    {
                        if (!dataTable.Columns.Contains(storage.Name))
                        {
                            continue;
                        }
                        object[] values = new object[2];
                        values[0] = DataSetResourceManager.GetColumnExtProperty(dataTable.Columns[storage.Name], ColumnExtProperties.FILTER_DEFAULT_VALUE_1) ?? null;
                        values[1] = DataSetResourceManager.GetColumnExtProperty(dataTable.Columns[storage.Name], ColumnExtProperties.FILTER_DEFAULT_VALUE_2) ?? null;

                        string codeField = (String)DataSetResourceManager.GetColumnExtProperty(dataTable.Columns[storage.Name], ColumnExtProperties.FILTER_DEFAULT_VALUE_CODE_FIELD);

                        if (storage.IsRefBound && !string.IsNullOrEmpty(codeField))
                        {
                            for (int i = 0; i < values.Length; i++)
                            {
                                if (values[i] != null)
                                {
                                    DataTable table = (DataTable)storage.RefDataSource;

                                    QueryConditionList queryConditionList = new QueryConditionList();
                                    QueryCondition     queryCondition     = new QueryCondition(codeField, ColumnFilterType.Equal, values[i], null);
                                    queryConditionList.Add(queryCondition);
                                    Type tableAdapterType = TableAdapterTools.GetTableAdapterType(table.GetType());

                                    QueryGenerator queryGenerator;

                                    if (table.Columns.IndexOf("dateEnd") != -1 && table.Columns.IndexOf("dateStart") != -1)
                                    {
                                        Component adapter = HistoricalData.GetTableAdapterToHistoricalData("dateEnd", "dateStart", DateTime.Now, tableAdapterType, 0);
                                        queryGenerator = new QueryGenerator(adapter);
                                    }
                                    else
                                    {
                                        queryGenerator = new QueryGenerator(table);
                                    }

                                    queryGenerator.TopCount = 1;
                                    queryGenerator.Fill(table, queryConditionList);
                                    if (table.Rows.Count != 0)
                                    {
                                        values[i] = table.Rows[0][storage.ValueColumn];
                                    }
                                }
                            }
                        }
                        storage.FilterType = columnFilterType;
                        try
                        {
                            for (int i = 0; i != 2; i++)
                            {
                                if (values[i] != null)
                                {
                                    storage.SetValue(i, Convert.ChangeType(values[i], storage.DataType));
                                }
                            }
                        }
                        catch (InvalidCastException)
                        {
                        }
                    }
                }
            }
        }
Пример #7
0
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);

            if (DesignMode)
            {
                return;
            }

            TableDataSourceView view      = (TableDataSourceView)GetData();
            DataTable           dataTable = view.Table;

            Boolean allowPaging = (Boolean)(DataSetResourceManager.GetTableExtProperty(dataTable, TableExtProperties.ALLOW_PAGING) ?? true);

            if (allowPaging)
            {
                Int32 pageSize = (Int32)(DataSetResourceManager.GetTableExtProperty(dataTable, TableExtProperties.PAGE_SIZE) ?? 10);
                gridView.AllowPaging = true;
                gridView.PageSize    = pageSize;
                view.EnablePaging    = true;
            }
            var isTree = AllowTreeAndPaging || (bool)(DataSetResourceManager.GetTableExtProperty(dataTable, TableExtProperties.IS_TREE_REF) ?? false);

            if (!allowPaging || isTree)
            {
                view.EnablePaging = false;
                if (!isTree)
                {
                    gridView.AllowPaging = false;
                }
                if (GridTreeMode)
                {
                    String Relation = (String)(DataSetResourceManager.GetTableExtProperty(dataTable, TableExtProperties.TREE_REF_RELATION) ?? "");
                    gridView.ShowAsTree            = !String.IsNullOrEmpty(Relation);
                    gridView.AllowNewButtonForTree = false;
                    gridView.PostBackOnExpnad      = postBackOnTreeExpand;
                    if (gridView.ShowAsTree)
                    {
                        gridView.RelationName = Relation;
                    }
                }
            }

            gridView.AutoGenerateColumns = false;

            if (ViewState["ColumnsCreated"] == null)
            {
                ViewState["ColumnsCreated"] = true;

                if (AllowErrorIconColumn)
                {
                    var field = new TemplateFieldExt
                    {
                        ColumnName = "ErrorIconColumn",
                    };
                    gridView.Columns.Add(field);
                }

                foreach (DataColumn dc in dataTable.Columns)
                {
                    var showColumn     = (Boolean)(DataSetResourceManager.GetColumnExtProperty(dc, ColumnExtProperties.VISIBLE) ?? false);
                    var visibleCulture = (string)DataSetResourceManager.GetColumnExtProperty(dc, ColumnExtProperties.VISIBLE_CULTURE);
                    if (!string.IsNullOrEmpty(visibleCulture))
                    {
                        showColumn = showColumn && visibleCulture.Equals(CultureInfo.CurrentUICulture.Name, StringComparison.CurrentCultureIgnoreCase);
                    }

                    Object[] rights        = (Object[])(DataSetResourceManager.GetColumnExtProperty(dc, ColumnExtProperties.RIGHTS) ?? new Object[] {});
                    Boolean  userHasRights = true;
                    foreach (Object right in rights)
                    {
                        userHasRights = UserRoles.IsInRole(Convert.ToString(right));
                        if (!userHasRights)
                        {
                            break;
                        }
                    }

                    if (showColumn && userHasRights)
                    {
                        String columnCaption = (String)(DataSetResourceManager.GetColumnExtProperty(dc, ColumnExtProperties.CAPTION) ?? dc.Caption);
                        if (dc.DataType == typeof(DateTime))
                        {
                            String dataFormatString = (String)(DataSetResourceManager.GetColumnExtProperty(dc, ColumnExtProperties.FILTER_DATE_TIME_FORMAT) ?? null);

                            BoundField boundField = new BoundField();
                            boundField.DataField        = dc.ColumnName;
                            boundField.HeaderText       = columnCaption;
                            boundField.DataFormatString = dataFormatString;
                            boundField.HtmlEncode       = false;
                            boundField.SortExpression   = dc.ColumnName;
                            gridView.Columns.Add(boundField);
                        }
                        else if (dc.DataType == typeof(Boolean))
                        {
                            CheckBoxField checkBoxField = new CheckBoxField();
                            checkBoxField.DataField      = dc.ColumnName;
                            checkBoxField.HeaderText     = columnCaption;
                            checkBoxField.SortExpression = dc.ColumnName;
                            gridView.Columns.Add(checkBoxField);
                        }
                        else
                        {
                            BoundField boundField = new BoundField();
                            boundField.DataField      = dc.ColumnName;
                            boundField.HeaderText     = columnCaption;
                            boundField.SortExpression = dc.ColumnName;
                            Boolean htmlEncode = (Boolean)(DataSetResourceManager.GetColumnExtProperty(dc, ColumnExtProperties.HTML_ENCODED) ?? false);
                            boundField.HtmlEncode = htmlEncode;
                            gridView.Columns.Add(boundField);
                        }
                    }
                }

                if (AllowErrorColumn)
                {
                    var field = new TemplateFieldExt
                    {
                        ColumnName = "ErrorColumn",
                        HeaderText = ErrorHeaderText,
                    };
                    gridView.Columns.Add(field);
                }
            }
            if (AllowErrorColumn || AllowErrorIconColumn)
            {
                gridView.RowCreated += GridView_OnRowCreated;
            }
        }
Пример #8
0
        public string GetLog()
        {
            StringBuilder log = new StringBuilder();

            Initialization();
            List <DataColumn> columnList = new List <DataColumn>();

            //Ишим колонки для логирования(LOG_ENTITY=True)
            foreach (DataColumn dc in tableDataSource.Table.Columns)
            {
                if ((Boolean)(DataSetResourceManager.GetColumnExtProperty(dc, ColumnExtProperties.LOG_ENTITY) ?? false))
                {
                    columnList.Add(dc);
                }
            }
            //Если не выбрали колонки для логирования, то логируем все кроме LOG_ENTITY=False
            if (columnList.Count == 0)
            {
                foreach (DataColumn column in tableDataSource.Table.Columns)
                {
                    if ((Boolean)(DataSetResourceManager.GetColumnExtProperty(column, ColumnExtProperties.LOG_ENTITY) ?? true))
                    {
                        columnList.Add(column);
                    }
                }
            }

            //Если у всех колонок стоит LOG_ENTITY=False, то возврашаем NULL
            if (columnList.Count == 0)
            {
                return(null);
            }

            List <string> logList = new List <string>();

            if (gridViewExt != null)
            {
                if (checkedIds != null && Page.Request.Params[checkedIds.UniqueID] != null)
                {
                    var values = Page.Request.Params[checkedIds.UniqueID];
                    var keys   = values.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).Distinct().ToDictionary(r => r);
                    for (int index = 0; index < tableDataSource.View.DataView.Count; index++)
                    {
                        if (keys.ContainsKey(tableDataSource.View.DataView[index].Row[ValueMember].ToString()))
                        {
                            string message = null;
                            foreach (DataColumn column in columnList)
                            {
                                message += tableDataSource.View.DataView[index].Row[column] + ", ";
                            }

                            if (message != null)
                            {
                                logList.Add(message.TrimEnd(',', ' '));
                            }
                        }
                    }
                }
                else
                {
                    CheckedField checkedField  = (CheckedField)gridViewExt.GetIGridColumn("cfDelete");
                    bool[]       checkedFields = checkedField.GetCheckedValues(gridViewExt);
                    for (int index = 0; index < tableDataSource.View.DataView.Count && index < checkedFields.Length; index++)
                    {
                        if (checkedFields[index])
                        {
                            string message = null;
                            foreach (DataColumn column in columnList)
                            {
                                message += tableDataSource.View.DataView[index].Row[column] + ", ";
                            }

                            if (message != null)
                            {
                                logList.Add(message.TrimEnd(',', ' '));
                            }
                        }
                    }
                }
            }
            else
            {
                tableDataSource.View.CustomConditions.Add(new QueryCondition(ValueMember, ColumnFilterType.In, _storage.Values));
                tableDataSource.View.Select(new DataSourceSelectArguments());
                for (int index = 0; index < tableDataSource.View.DataView.Count; index++)
                {
                    string message = null;
                    foreach (DataColumn column in columnList)
                    {
                        message += tableDataSource.View.DataView[index].Row[column] + ", ";
                    }

                    if (message != null)
                    {
                        logList.Add(message.TrimEnd(',', ' '));
                    }
                }
            }

            string caption = GetStorage().Caption;
            string text    = "Поле '" + caption + "' содержит '";

            foreach (string message in logList)
            {
                text += message + "; ";
            }
            log.Append(text.Remove(text.Length - 2) + '\'');

            return(log.AppendLine().ToString());
        }
Пример #9
0
        protected virtual void CreateGridView()
        {
            if (_storage == null)
            {
                throw new NullReferenceException("ColumnFilterStorage must be specified");
            }

            var table = new Table();

            Controls.Add(table);
            table.Width = Width;
            table.Style["table-layout"] = "fixed";
            //table.CssClass = "ms-gridtext";
            table.Rows.Add(new TableRow());
            table.Rows[0].Cells.Add(
                new TableCell
            {
                Text            = string.Format("<div style='width:170px;'>{0}</div>", GetStorage().Caption),
                Width           = Unit.Pixel(170),
                HorizontalAlign = HorizontalAlign.Right,
            });
            table.Rows[0].Cells.Add(new TableCell {
                Width = Unit.Percentage(100)
            });
            table.Rows[0].Cells[0].Style["padding-right"] = "6px";
            table.Rows[0].Cells[1].Style["padding-right"] = "6px";

            DataTable filterRefTable = DataSourceHelper.GetDataTable(DataSource);

            panel = new Panel();

            panel.ID          = "panel_ID";
            panel.Width       = Unit.Percentage(100);
            panel.Height      = PanelHeight;
            panel.ScrollBars  = ScrollBars.Auto;
            panel.BorderWidth = 1;
            panel.BorderColor = Color.LightGray;
            table.Rows[0].Cells[1].Controls.Add(panel);

            Initialization();

            panel.Controls.Add(tableDataSource);
            gridViewExt                       = new GridViewExt();
            gridViewExt.ID                    = "gridViewExt_ID";
            gridViewExt.DataKeyNames          = new string[] { ValueMember };
            gridViewExt.AutoGenerateColumns   = false;
            gridViewExt.AllowNewButtonForTree = false;
            gridViewExt.Height                = Unit.Percentage(100);
            gridViewExt.Width                 = Unit.Percentage(100);
            gridViewExt.EmptyDataText         = Resources.SEmptyDataText;
            gridViewExt.UseDeleteField        = true;
            gridViewExt.AllowPaging           = (bool)(DataSetResourceManager.GetTableExtProperty(filterRefTable, TableExtProperties.ALLOW_PAGING) ?? true);
            if ((Boolean)(DataSetResourceManager.GetTableExtProperty(filterRefTable, TableExtProperties.IS_TREE_REF) ?? false))
            {
                gridViewExt.AllowPaging  = false;
                gridViewExt.ShowAsTree   = true;
                gridViewExt.RelationName = DataSetResourceManager.GetTableExtProperty(
                    filterRefTable, TableExtProperties.TREE_REF_RELATION).ToString();
            }

            tableDataSource.View.EnablePaging = gridViewExt.AllowPaging;
            gridViewExt.DataSourceID          = tableDataSource.ID;
            foreach (DataColumn dc in tableDataSource.Table.Columns)
            {
                Boolean showColumn     = (Boolean)(DataSetResourceManager.GetColumnExtProperty(dc, ColumnExtProperties.VISIBLE) ?? false);
                string  visibleCulture = (string)(DataSetResourceManager.GetColumnExtProperty(dc, ColumnExtProperties.VISIBLE_CULTURE));
                if (showColumn && (string.IsNullOrEmpty(visibleCulture) || System.Threading.Thread.CurrentThread.CurrentUICulture.Name == visibleCulture))
                {
                    String columnCaption = (String)(DataSetResourceManager.GetColumnExtProperty(dc, ColumnExtProperties.CAPTION) ?? dc.Caption);

                    BoundField boundField = new BoundField();
                    boundField.DataField          = dc.ColumnName;
                    boundField.HeaderText         = columnCaption;
                    boundField.HeaderStyle.Height = new Unit(25, UnitType.Pixel);
                    boundField.SortExpression     = dc.ColumnName;
                    Boolean htmlEncode = (Boolean)(DataSetResourceManager.GetColumnExtProperty(dc, ColumnExtProperties.HTML_ENCODED) ?? false);
                    boundField.HtmlEncode = htmlEncode;
                    gridViewExt.Columns.Add(boundField);
                }
            }

            var boundColumns = gridViewExt.Columns.OfType <BoundField>().Where(r => !string.IsNullOrEmpty(r.DataField)).ToList();

            if (boundColumns.Count == 1)
            {
                boundColumns[0].HeaderStyle.Width = new Unit(100, UnitType.Percentage);
            }

            table.Rows[0].Cells[1].Controls.Add(GetSearchPanel());

            if (gridViewExt.AllowPaging)
            {
                checkedIds = new HiddenField {
                    ID = "checkedIds"
                };
                if (_storage.Values == null || _storage.Values.Length == 0)
                {
                    checkedIds.Value = "";
                }
                else
                {
                    checkedIds.Value = string.Join(",", _storage.Values.Select(Convert.ToString).ToArray());
                }
                Controls.Add(checkedIds);
            }

            panel.Controls.Add(gridViewExt);

            var searchValue = Page.Request.Params[QuickSearchTextBox.UniqueID];

            if (!string.IsNullOrEmpty(searchValue) && gridViewExt.AllowPaging)
            {
                var searchCondition = new QueryCondition
                {
                    Conditions =
                        new QueryConditionList
                    {
                        ConditionJunction = ConditionJunction.Or
                    }
                };
                foreach (DataColumn dc in tableDataSource.Table.Columns)
                {
                    var showColumn = (Boolean)(DataSetResourceManager.GetColumnExtProperty(dc, ColumnExtProperties.VISIBLE) ?? false);
                    if (showColumn)
                    {
                        searchCondition.Conditions.Add(
                            new QueryCondition(dc.ColumnName, ColumnFilterType.Contains, searchValue, null));
                    }
                }

                tableDataSource.View.CustomConditions.Add(searchCondition);
            }

            if (checkedIds != null)
            {
                var checkedField = (CheckedField)gridViewExt.GetIGridColumn("cfDelete");
                checkedField.OnChanged    = string.Format("{0}(this);", GetCheckChangedFunctionName());
                checkedField.OnChangedAll = string.Format("{0}(this);", GetCheckChangedAllFunctionName());
            }
        }
Пример #10
0
        protected override void CreateChildControls()
        {
            base.CreateChildControls();

            // Ensure ColumnFilterStorage
            if (ColumnFilterStorage == null)
            {
                throw new NullReferenceException("ColumnFilterStorage must be specified");
            }

            // Create controls hierarchy
            table = new Table();
            Controls.Add(table);
            table.Width = Width != Unit.Empty ? Width : Unit.Percentage(100);
            table.Style["table-layout"] = "fixed";
            //table.CssClass = "ms-gridtext";
            filterRow = new TableRow();
            filterRow.Cells.Add(new TableCell());
            filterRow.Cells.Add(new TableCell());

            int countItems;

            if ((ColumnFilterStorage.IsRefBound && ((ColumnFilterStorage.AvailableFilters & ColumnFilterType.Between) == 0)) ||
                ColumnFilterStorage.DataType == typeof(String))
            {
                countItems = 1;
                filterRow.Cells.Add(new TableCell {
                    ColumnSpan = 2, Width = Unit.Percentage(100)
                });
                filterRow.Cells.Add(new TableCell {
                    ID = "fillEmpty"
                });
            }
            else
            {
                countItems = 2;
                filterRow.Cells.Add(new TableCell {
                    Width = Unit.Pixel(150)
                });
                filterRow.Cells.Add(new TableCell {
                    Width = Unit.Pixel(150)
                });
                filterRow.Cells.Add(new TableCell {
                    ID = "fillEmpty"
                });
            }

            dropDownList    = new DropDownList();
            dropDownList.ID = "dropDownListID";
            filterRow.Cells[1].Controls.Add(dropDownList);

            controls = new WebControl[2];

            for (int i = 0; i != countItems; i++)
            {
                if (ColumnFilterStorage.IsRefBound)
                {
                    DataTable filterRefTable = DataSourceHelper.GetDataTable(ColumnFilterStorage.RefDataSource);

                    if (filterRefTable != null)
                    {
                        Type tableAdapterType = TableAdapterTools.GetTableAdapterType(filterRefTable.GetType());

                        tableDataSource              = new TableDataSource();
                        tableDataSource.ID           = String.Format("tableDataSource{0}_ID", i);
                        tableDataSource.TypeName     = tableAdapterType.FullName;
                        tableDataSource.SelectMethod = ColumnFilterStorage.SelectMethod;
                        tableDataSource.FillType     = TableDataSourceFillType.ParametersNotChanged;

                        if (SessionWorker == null)
                        {
                            SessionWorker sw = new SessionWorker(this.Page, Guid.NewGuid().ToString());
                            sw.Object     = filterRefTable.DataSet;
                            SessionWorker = sw;
                        }

                        tableDataSource.SessionWorker = SessionWorker;
                        tableDataSource.SetFilterByCustomConditions = false;
                        tableDataSource.View.CustomConditions.AddRange(ColumnFilterStorage.CustomConditions);
                        tableDataSource.HistoricalCountKeys = 0;

                        if (filterRefTable.Columns.IndexOf("dateEnd") != -1 && filterRefTable.Columns.IndexOf("dateStart") != -1)
                        {
                            tableDataSource.ShowHistoricalData = true;
                        }

                        filterRow.Cells[2 + i].Controls.Add(tableDataSource);

                        // This is only for compability with SMSES
                        ColumnFilterStorage.RefTableRolledIn =
                            (bool)(DataSetResourceManager.GetTableExtProperty(filterRefTable, TableExtProperties.ROLLED_IN) ?? false);
                    }
                    else
                    {
                        ColumnFilterStorage.RefTableRolledIn = false;
                    }

                    if (String.IsNullOrEmpty(ColumnFilterStorage.ValueColumn) || String.IsNullOrEmpty(ColumnFilterStorage.DisplayColumn))
                    {
                        throw new Exception("FILTER_REF_DISPLAY_COLUMN and FILTER_REF_VALUE_COLUMN attribute must be specified");
                    }

                    if (!string.IsNullOrEmpty(CheckedFilterCondition))
                    {
                        checkBoxForFilterCondition = new CheckBox
                        {
                            ID           = "checkBoxForFilter",
                            Text         = CheckedFilterConditionTooltip,
                            AutoPostBack = true,
                            TextAlign    = TextAlign.Right,
                        };
                        checkBoxForFilterCondition.CheckedChanged += OnCheckBoxForFilterConditionOnCheckedChanged;
                    }

                    if (ColumnFilterStorage.RefTableRolledIn)
                    {
                        LookupTextBox lookupTextBox = new LookupTextBox();
                        lookupTextBox.DataSource     = tableDataSource;
                        lookupTextBox.DataTextField  = ColumnFilterStorage.DisplayColumn;
                        lookupTextBox.DataValueField = ColumnFilterStorage.ValueColumn;
                        String Relation = (String)(DataSetResourceManager.GetTableExtProperty(filterRefTable, TableExtProperties.TREE_REF_RELATION) ?? "");
                        if (!String.IsNullOrEmpty(Relation))
                        {
                            String dataDisableRowField = (String)(DataSetResourceManager.GetTableExtProperty(filterRefTable, TableExtProperties.TREE_ALLOW_FIELD));

                            lookupTextBox.GridTreeMode = true;
                            if (!string.IsNullOrEmpty(dataDisableRowField))
                            {
                                lookupTextBox.DataDisableRowField = dataDisableRowField;
                            }
                        }
                        controls[i] = lookupTextBox;
                    }
                    else
                    {
                        var lookupList = new DropDownListExt();
                        if (tableDataSource != null)
                        {
                            lookupList.DataSource    = tableDataSource;
                            tableDataSource.FillType = TableDataSourceFillType.Always;
                        }
                        else
                        {
                            lookupList.DataSource = ColumnFilterStorage.RefDataSource;
                        }
                        lookupList.DataTextField   = ColumnFilterStorage.DisplayColumn;
                        lookupList.DataValueField  = ColumnFilterStorage.ValueColumn;
                        lookupList.IncludeNullItem = true;
                        lookupList.DataBind();
                        controls[i] = lookupList;
                    }
                }
                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))
                {
                    var textBox = new TextBox();
                    controls[i] = textBox;
                    if (new Type[] { typeof(Int64), typeof(Int32), typeof(Int16) }.Contains(ColumnFilterStorage.DataType))
                    {
                        textBox.Attributes["type"] = "number";
                    }
                    if (TextBoxHeight != null)
                    {
                        textBox.Height   = TextBoxHeight.Value;
                        textBox.TextMode = TextBoxMode.MultiLine;
                    }
                }
                else if (ColumnFilterStorage.DataType == typeof(DateTime))
                {
                    DatePicker datePicker = new DatePicker();

                    switch (ColumnFilterStorage.DateTimeFormat)
                    {
                    case "{0:d}":
                        datePicker.Mode = DatePickerMode.Date;
                        break;

                    case "{0:t}":
                        datePicker.Mode = DatePickerMode.Time;
                        break;

                    case "{0:f}":
                        datePicker.Mode = DatePickerMode.DateTime;
                        break;
                    }
                    datePicker.PopupBehaviorParentNode = PopupBehaviorParentNode;
                    datePicker.Width = Unit.Pixel(150);
                    controls[i]      = datePicker;
                    ((DatePicker)controls[i]).AutoPostBack = postBack;
                }
                else if (ColumnFilterStorage.DataType == typeof(Boolean))
                {
                    DropDownList list = new DropDownList();
                    list.Items.Add(new ListItem(LookupControlsResources.STrue, true.ToString().ToLower()));
                    list.Items.Add(new ListItem(LookupControlsResources.SFalse, false.ToString().ToLower()));
                    controls[i] = list;
                }
                else
                {
                    throw new Exception(String.Format("Data type not supported: {0}", ColumnFilterStorage.DataType.Name));
                }

                controls[i].ID = String.Format("control{0}ID", i);
                filterRow.Cells[2 + i].Controls.Add(controls[i]);
                controls[i].Width = Unit.Percentage(100);
            }

            // Setup controls' properties
            filterRow.Cells[0].Text = ColumnFilterStorage.Caption;

            //filterRow.Cells[0].BackColor = Color.DarkTurquoise;
            //filterRow.Cells[1].BackColor = Color.DarkSeaGreen;
            //filterRow.Cells[2].BackColor = Color.Salmon;
            //filterRow.Cells[3].BackColor = Color.DodgerBlue;

            filterRow.Cells[0].Style["padding-right"] = "6px";
            filterRow.Cells[1].Style["padding-right"] = "6px";
            filterRow.Cells[2].Style["padding-right"] = "6px";
            filterRow.Cells[2].Style["display"]       = "none";
            if (filterRow.Cells.Count > 3 && filterRow.Cells[3].ID != "fillEmpty")
            {
                filterRow.Cells[3].Style["padding-right"] = "6px";
                filterRow.Cells[3].Style["display"]       = "none";
            }

            filterRow.Cells[0].Width = Unit.Pixel(170);
            filterRow.Cells[1].Width = Unit.Pixel(140);

            filterRow.Cells[0].HorizontalAlign = HorizontalAlign.Right;

            dropDownList.Width           = Unit.Percentage(100);
            dropDownList.AutoPostBack    = postBack;
            dropDownList.EnableViewState = false;
            foreach (ColumnFilterType columnFilterType in Enum.GetValues(typeof(ColumnFilterType)))
            {
                if (EnumHelper.Contains(columnFilterType, ColumnFilterStorage.AvailableFilters))
                {
                    ListItem ListItem = new ListItem();
                    ListItem.Value = Convert.ToInt64(columnFilterType).ToString();
                    if (CustomColumnFilterTypeCaptions != null && CustomColumnFilterTypeCaptions.ContainsKey(columnFilterType))
                    {
                        ListItem.Text = CustomColumnFilterTypeCaptions[columnFilterType];
                    }
                    else
                    {
                        ListItem.Text = columnFilterType.GetFilterTypeCaption();
                    }
                    dropDownList.Items.Add(ListItem);
                }
            }
            dropDownList.Enabled = dropDownList.Items.Count > 1;

            if (checkBoxForFilterCondition != null)
            {
                var tableRow = new TableRow();
                table.Rows.Add(tableRow);
                tableRow.Cells.Add(new TableCell {
                    Width = filterRow.Cells[0].Width, Height = new Unit(24, UnitType.Pixel),
                });
                tableRow.Cells.Add(new TableCell {
                    Width = filterRow.Cells[1].Width, Height = new Unit(24, UnitType.Pixel),
                });
                var tableCell = new TableCell
                {
                    Width      = filterRow.Cells[2].Width,
                    ColumnSpan = 2,
                    Height     = new Unit(24, UnitType.Pixel),
                };
                tableRow.Cells.Add(tableCell);
                tableCell.Controls.Add(checkBoxForFilterCondition);
                checkBoxForFilterCondition.Style["position"] = "relative";
                checkBoxForFilterCondition.Style["top"]      = "6px";

                tableRow.Cells[0].Style["padding-right"] = "6px";
                tableRow.Cells[1].Style["padding-right"] = "6px";
                tableRow.Cells[2].Style["padding-right"] = "6px";
            }

            table.Rows.Add(filterRow);
        }