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(); }
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); } } }
/// <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); }
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()); }
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); } } }
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) { } } } } }
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; } }
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()); }
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()); } }
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); }