private void AddGridColumns(DataTable dataTable) { int rowsToEval = 10; if ( dataTable.Rows.Count < 10 ) { rowsToEval = dataTable.Rows.Count; } gReport.Columns.Clear(); foreach(DataColumn dtColumn in dataTable.Columns) { BoundField bf = new BoundField(); if ( dtColumn.DataType == typeof( Boolean ) ) { bf = new BoolField(); } if ( dtColumn.DataType == typeof( DateTime ) ) { bf = new DateField(); for ( int i = 0; i < rowsToEval; i++ ) { object dateObj = dataTable.Rows[i][dtColumn]; if ( dateObj is DateTime ) { DateTime dateTime = (DateTime)dateObj; if ( dateTime.TimeOfDay.Seconds != 0 ) { bf = new DateTimeField(); break; } } } } bf.DataField = dtColumn.ColumnName; bf.SortExpression = dtColumn.ColumnName; bf.HeaderText = dtColumn.ColumnName.SplitCase(); gReport.Columns.Add( bf ); } }
protected void AddColumns( ContentChannel channel) { // Remove all columns gContentChannelItems.Columns.Clear(); if ( channel != null ) { // Add Title column var titleField = new BoundField(); titleField.DataField = "Title"; titleField.HeaderText = "Title"; titleField.SortExpression = "Title"; gContentChannelItems.Columns.Add( titleField ); // Add Attribute columns int entityTypeId = EntityTypeCache.Read( typeof( Rock.Model.ContentChannelItem ) ).Id; string channelId = channel.Id.ToString(); string channelTypeId = channel.ContentChannelTypeId.ToString(); foreach ( var attribute in new AttributeService( new RockContext() ).Queryable() .Where( a => a.EntityTypeId == entityTypeId && a.IsGridColumn && ( ( a.EntityTypeQualifierColumn.Equals( "ContentChannelTypeId", StringComparison.OrdinalIgnoreCase ) && a.EntityTypeQualifierValue.Equals( channelTypeId ) ) || ( a.EntityTypeQualifierColumn.Equals( "ContentChannelId", StringComparison.OrdinalIgnoreCase ) && a.EntityTypeQualifierValue.Equals( channelId ) ) ) ) .OrderBy( a => a.Order ) .ThenBy( a => a.Name ) ) { string dataFieldExpression = attribute.Key; bool columnExists = gContentChannelItems.Columns.OfType<AttributeField>().FirstOrDefault( a => a.DataField.Equals( dataFieldExpression ) ) != null; if ( !columnExists ) { AttributeField boundField = new AttributeField(); boundField.DataField = dataFieldExpression; boundField.HeaderText = attribute.Name; boundField.SortExpression = string.Empty; var attributeCache = Rock.Web.Cache.AttributeCache.Read( attribute.Id ); if ( attributeCache != null ) { boundField.ItemStyle.HorizontalAlign = attributeCache.FieldType.Field.AlignValue; } gContentChannelItems.Columns.Add( boundField ); } } // Add Start column var startField = new DateTimeField(); startField.DataField = "StartDateTime"; startField.HeaderText = channel.ContentChannelType.DateRangeType == ContentChannelDateType.DateRange ? "Start" : "Date"; startField.SortExpression = "StartDateTime"; gContentChannelItems.Columns.Add( startField ); // Expire column if ( channel.ContentChannelType.DateRangeType == ContentChannelDateType.DateRange ) { var expireField = new DateTimeField(); expireField.DataField = "ExpireDateTime"; expireField.HeaderText = "Expire"; expireField.SortExpression = "ExpireDateTime"; gContentChannelItems.Columns.Add( expireField ); } // Priority column var priorityField = new BoundField(); priorityField.DataField = "Priority"; priorityField.HeaderText = "Priority"; priorityField.SortExpression = "Priority"; priorityField.DataFormatString = "{0:N0}"; priorityField.ItemStyle.HorizontalAlign = HorizontalAlign.Right; gContentChannelItems.Columns.Add( priorityField ); // Status column if ( channel.RequiresApproval ) { var statusField = new BoundField(); gContentChannelItems.Columns.Add( statusField ); statusField.DataField = "Status"; statusField.HeaderText = "Status"; statusField.SortExpression = "Status"; statusField.HtmlEncode = false; } bool canEditChannel = channel.IsAuthorized( Rock.Security.Authorization.EDIT, CurrentPerson ); gContentChannelItems.Actions.ShowAdd = canEditChannel; gContentChannelItems.IsDeleteEnabled = canEditChannel; if ( canEditChannel ) { var deleteField = new DeleteField(); gContentChannelItems.Columns.Add( deleteField ); deleteField.Click += gContentChannelItems_Delete; } } }
/// <summary> /// Adds the attribute columns. /// </summary> private void AddDynamicControls() { // Clear the filter controls phAttributeFilters.Controls.Clear(); // Remove attribute columns foreach ( var column in gWorkflows.Columns.OfType<AttributeField>().ToList() ) { gWorkflows.Columns.Remove( column ); } if ( AvailableAttributes != null ) { foreach ( var attribute in AvailableAttributes ) { var control = attribute.FieldType.Field.FilterControl( attribute.QualifierValues, "filter_" + attribute.Id.ToString(), false, Rock.Reporting.FilterMode.SimpleFilter ); if ( control is IRockControl ) { var rockControl = (IRockControl)control; rockControl.Label = attribute.Name; rockControl.Help = attribute.Description; phAttributeFilters.Controls.Add( control ); } else { var wrapper = new RockControlWrapper(); wrapper.ID = control.ID + "_wrapper"; wrapper.Label = attribute.Name; wrapper.Controls.Add( control ); phAttributeFilters.Controls.Add( wrapper ); } string savedValue = gfWorkflows.GetUserPreference( MakeKeyUniqueToType( attribute.Key ) ); if ( !string.IsNullOrWhiteSpace( savedValue ) ) { try { var values = JsonConvert.DeserializeObject<List<string>>( savedValue ); attribute.FieldType.Field.SetFilterValues( control, attribute.QualifierValues, values ); } catch { } } string dataFieldExpression = attribute.Key; bool columnExists = gWorkflows.Columns.OfType<AttributeField>().FirstOrDefault( a => a.DataField.Equals( dataFieldExpression ) ) != null; if ( !columnExists ) { AttributeField boundField = new AttributeField(); boundField.DataField = dataFieldExpression; boundField.HeaderText = attribute.Name; boundField.SortExpression = string.Empty; boundField.Condensed = false; var attributeCache = Rock.Web.Cache.AttributeCache.Read( attribute.Id ); if ( attributeCache != null ) { boundField.ItemStyle.HorizontalAlign = attributeCache.FieldType.Field.AlignValue; } gWorkflows.Columns.Add( boundField ); } } } var dateField = new DateTimeField(); gWorkflows.Columns.Add( dateField ); dateField.DataField = "CreatedDateTime"; dateField.SortExpression = "CreatedDateTime"; dateField.HeaderText = "Created"; dateField.FormatAsElapsedTime = true; var statusField = new BoundField(); gWorkflows.Columns.Add( statusField ); statusField.DataField = "Status"; statusField.SortExpression = "Status"; statusField.HeaderText = "Status"; statusField.DataFormatString = "<span class='label label-info'>{0}</span>"; statusField.HtmlEncode = false; var stateField = new CallbackField(); gWorkflows.Columns.Add( stateField ); stateField.DataField = "IsCompleted"; stateField.SortExpression = "CompletedDateTime"; stateField.HeaderText = "State"; stateField.HtmlEncode = false; stateField.OnFormatDataValue += ( sender, e ) => { if ( (bool)e.DataValue ) { e.FormattedValue = "<span class='label label-default'>Completed</span>"; } else { e.FormattedValue = "<span class='label label-success'>Active</span>"; } }; if ( _canView ) { var manageField = new LinkButtonField(); gWorkflows.Columns.Add( manageField ); manageField.CssClass = "btn btn-default btn-sm fa fa-file-text-o"; manageField.Click += gWorkflows_Manage; } if ( _canEdit ) { var deleteField = new DeleteField(); gWorkflows.Columns.Add( deleteField ); deleteField.Click += gWorkflows_Delete; } }
/// <summary> /// Adds the grid columns. /// </summary> /// <param name="dataTable">The data table.</param> private void AddGridColumns( Grid grid, DataTable dataTable ) { bool showColumns = GetAttributeValue( "ShowColumns" ).AsBoolean(); var columnList = GetAttributeValue( "Columns" ).SplitDelimitedValues().ToList(); int rowsToEval = 10; if ( dataTable.Rows.Count < 10 ) { rowsToEval = dataTable.Rows.Count; } grid.Columns.Clear(); if ( !string.IsNullOrWhiteSpace( grid.PersonIdField ) ) { grid.Columns.Add( new SelectField() ); } GridFilterColumnLookup = new Dictionary<Control, string>(); foreach ( DataColumn dataTableColumn in dataTable.Columns ) { if ( columnList.Count > 0 && ( ( showColumns && !columnList.Contains( dataTableColumn.ColumnName, StringComparer.OrdinalIgnoreCase ) ) || ( !showColumns && columnList.Contains( dataTableColumn.ColumnName, StringComparer.OrdinalIgnoreCase ) ) ) ) { continue; } BoundField bf = new BoundField(); var splitCaseName = dataTableColumn.ColumnName.SplitCase(); if ( dataTableColumn.DataType == typeof( bool ) ) { bf = new BoolField(); if ( GridFilter != null ) { var id = "ddl" + dataTableColumn.ColumnName.RemoveSpecialCharacters(); var filterControl = new RockDropDownList() { Label = splitCaseName, ID = id }; GridFilterColumnLookup.Add( filterControl, dataTableColumn.ColumnName ); filterControl.Items.Add( BoolToString( null ) ); filterControl.Items.Add( BoolToString( true ) ); filterControl.Items.Add( BoolToString( false ) ); GridFilter.Controls.Add( filterControl ); var value = GridFilter.GetUserPreference( id ); if ( value != null ) { filterControl.SetValue( value ); } } } else if ( dataTableColumn.DataType == typeof( DateTime ) ) { bf = new DateField(); for ( int i = 0; i < rowsToEval; i++ ) { object dateObj = dataTable.Rows[i][dataTableColumn]; if ( dateObj is DateTime ) { DateTime dateTime = ( DateTime ) dateObj; if ( dateTime.TimeOfDay.Seconds != 0 ) { bf = new DateTimeField(); break; } } } if ( GridFilter != null ) { var id = "drp" + dataTableColumn.ColumnName.RemoveSpecialCharacters(); var filterControl = new DateRangePicker() { Label = splitCaseName, ID = id, }; GridFilterColumnLookup.Add( filterControl, dataTableColumn.ColumnName ); GridFilter.Controls.Add( filterControl ); var value = GridFilter.GetUserPreference( id ); if ( value != null ) { DateTime upper; DateTime lower; if ( DateRangePicker.TryParse( value, out lower, out upper ) ) { filterControl.LowerValue = lower; filterControl.UpperValue = upper; } } } } else { bf.HtmlEncode = false; if ( GridFilter != null ) { var id = "tb" + dataTableColumn.ColumnName.RemoveSpecialCharacters(); var filterControl = new RockTextBox() { Label = splitCaseName, ID = id }; GridFilterColumnLookup.Add( filterControl, dataTableColumn.ColumnName ); GridFilter.Controls.Add( filterControl ); var key = filterControl.ID; var value = GridFilter.GetUserPreference( key ); if ( value != null ) { filterControl.Text = value; } } } bf.DataField = dataTableColumn.ColumnName; bf.SortExpression = dataTableColumn.ColumnName; bf.HeaderText = splitCaseName; grid.Columns.Add( bf ); } }
protected void AddDynamicControls( ContentChannel channel) { // Remove all columns gContentChannelItems.Columns.Clear(); phAttributeFilters.Controls.Clear(); if ( channel != null ) { // Add Title column var titleField = new BoundField(); titleField.DataField = "Title"; titleField.HeaderText = "Title"; titleField.SortExpression = "Title"; gContentChannelItems.Columns.Add( titleField ); // Add Attribute columns int entityTypeId = EntityTypeCache.Read( typeof( Rock.Model.ContentChannelItem ) ).Id; string channelId = channel.Id.ToString(); string channelTypeId = channel.ContentChannelTypeId.ToString(); foreach ( var attribute in AvailableAttributes ) { var control = attribute.FieldType.Field.FilterControl( attribute.QualifierValues, "filter_" + attribute.Id.ToString(), false, Rock.Reporting.FilterMode.SimpleFilter ); if ( control != null ) { if ( control is IRockControl ) { var rockControl = (IRockControl)control; rockControl.Label = attribute.Name; rockControl.Help = attribute.Description; phAttributeFilters.Controls.Add( control ); } else { var wrapper = new RockControlWrapper(); wrapper.ID = control.ID + "_wrapper"; wrapper.Label = attribute.Name; wrapper.Controls.Add( control ); phAttributeFilters.Controls.Add( wrapper ); } string savedValue = gfFilter.GetUserPreference( MakeKeyUniqueToChannel( channel.Id, attribute.Key ) ); if ( !string.IsNullOrWhiteSpace( savedValue ) ) { try { var values = JsonConvert.DeserializeObject<List<string>>( savedValue ); attribute.FieldType.Field.SetFilterValues( control, attribute.QualifierValues, values ); } catch { // intentionally ignore } } } string dataFieldExpression = attribute.Key; bool columnExists = gContentChannelItems.Columns.OfType<AttributeField>().FirstOrDefault( a => a.DataField.Equals( dataFieldExpression ) ) != null; if ( !columnExists ) { AttributeField boundField = new AttributeField(); boundField.DataField = dataFieldExpression; boundField.HeaderText = attribute.Name; boundField.SortExpression = string.Empty; boundField.ItemStyle.HorizontalAlign = attribute.FieldType.Field.AlignValue; gContentChannelItems.Columns.Add( boundField ); } } if ( channel.ContentChannelType.IncludeTime ) { // Add Start column var startField = new DateTimeField(); startField.DataField = "StartDateTime"; startField.HeaderText = channel.ContentChannelType.DateRangeType == ContentChannelDateType.DateRange ? "Start" : "Date"; startField.SortExpression = "StartDateTime"; gContentChannelItems.Columns.Add( startField ); // Expire column if ( channel.ContentChannelType.DateRangeType == ContentChannelDateType.DateRange ) { var expireField = new DateTimeField(); expireField.DataField = "ExpireDateTime"; expireField.HeaderText = "Expire"; expireField.SortExpression = "ExpireDateTime"; gContentChannelItems.Columns.Add( expireField ); } } else { // Add Start column var startField = new DateField(); startField.DataField = "StartDateTime"; startField.HeaderText = channel.ContentChannelType.DateRangeType == ContentChannelDateType.DateRange ? "Start" : "Date"; startField.SortExpression = "StartDateTime"; gContentChannelItems.Columns.Add( startField ); // Expire column if ( channel.ContentChannelType.DateRangeType == ContentChannelDateType.DateRange ) { var expireField = new DateField(); expireField.DataField = "ExpireDateTime"; expireField.HeaderText = "Expire"; expireField.SortExpression = "ExpireDateTime"; gContentChannelItems.Columns.Add( expireField ); } } // Priority column var priorityField = new BoundField(); priorityField.DataField = "Priority"; priorityField.HeaderText = "Priority"; priorityField.SortExpression = "Priority"; priorityField.DataFormatString = "{0:N0}"; priorityField.ItemStyle.HorizontalAlign = HorizontalAlign.Right; gContentChannelItems.Columns.Add( priorityField ); // Status column if ( channel.RequiresApproval ) { var statusField = new BoundField(); gContentChannelItems.Columns.Add( statusField ); statusField.DataField = "Status"; statusField.HeaderText = "Status"; statusField.SortExpression = "Status"; statusField.HtmlEncode = false; } // Add occurrences Count column var occurrencesField = new BoolField(); occurrencesField.DataField = "Occurrences"; occurrencesField.HeaderText = "Event Occurrences"; gContentChannelItems.Columns.Add( occurrencesField ); bool canEditChannel = channel.IsAuthorized( Rock.Security.Authorization.EDIT, CurrentPerson ); gContentChannelItems.Actions.ShowAdd = canEditChannel; gContentChannelItems.IsDeleteEnabled = canEditChannel; if ( canEditChannel ) { var deleteField = new DeleteField(); gContentChannelItems.Columns.Add( deleteField ); deleteField.Click += gContentChannelItems_Delete; } } }
/// <summary> /// Adds the grid columns. /// </summary> /// <param name="dataTable">The data table.</param> private void AddGridColumns( DataTable dataTable ) { bool showColumns = bool.Parse( GetAttributeValue( "ShowColumns" ) ); var columnList = GetAttributeValue( "Columns" ).SplitDelimitedValues().ToList(); int rowsToEval = 10; if ( dataTable.Rows.Count < 10 ) { rowsToEval = dataTable.Rows.Count; } gReport.Columns.Clear(); if ( !string.IsNullOrWhiteSpace( gReport.PersonIdField ) ) { gReport.Columns.Add( new SelectField() ); } foreach ( DataColumn dataTableColumn in dataTable.Columns ) { if ( columnList.Count > 0 && ( ( showColumns && !columnList.Contains( dataTableColumn.ColumnName, StringComparer.OrdinalIgnoreCase ) ) || ( !showColumns && columnList.Contains( dataTableColumn.ColumnName, StringComparer.OrdinalIgnoreCase ) ) ) ) { continue; } BoundField bf = new BoundField(); if ( dataTableColumn.DataType == typeof( bool ) ) { bf = new BoolField(); } if ( dataTableColumn.DataType == typeof( DateTime ) ) { bf = new DateField(); for ( int i = 0; i < rowsToEval; i++ ) { object dateObj = dataTable.Rows[i][dataTableColumn]; if ( dateObj is DateTime ) { DateTime dateTime = (DateTime)dateObj; if ( dateTime.TimeOfDay.Seconds != 0 ) { bf = new DateTimeField(); break; } } } } bf.DataField = dataTableColumn.ColumnName; bf.SortExpression = dataTableColumn.ColumnName; bf.HeaderText = dataTableColumn.ColumnName.SplitCase(); gReport.Columns.Add( bf ); } }
/// <summary> /// Adds the grid columns. /// </summary> /// <param name="dataTable">The data table.</param> private void AddGridColumns( object item ) { Type oType = item.GetType(); gReport.Columns.Clear(); foreach ( var prop in oType.GetProperties() ) { BoundField bf = new BoundField(); if ( prop.PropertyType == typeof( bool ) || prop.PropertyType == typeof( bool? ) ) { bf = new BoolField(); } if ( prop.PropertyType == typeof( DateTime ) || prop.PropertyType == typeof( DateTime? ) ) { bf = new DateTimeField(); } bf.DataField = prop.Name; bf.SortExpression = prop.Name; bf.HeaderText = prop.Name.SplitCase(); gReport.Columns.Add( bf ); } }
/// <summary> /// Raises the <see cref="E:System.Web.UI.Control.Init" /> event. /// </summary> /// <param name="e">An <see cref="T:System.EventArgs" /> object that contains the event data.</param> protected override void OnInit( EventArgs e ) { base.OnInit( e ); if ( _workflowType != null ) { gfWorkflows.ApplyFilterClick += gfWorkflows_ApplyFilterClick; gfWorkflows.DisplayFilterValue += gfWorkflows_DisplayFilterValue; // this event gets fired after block settings are updated. it's nice to repaint the screen if these settings would alter it this.BlockUpdated += Block_BlockUpdated; this.AddConfigurationUpdateTrigger( upnlSettings ); gWorkflows.DataKeyNames = new string[] { "id" }; gWorkflows.Actions.ShowAdd = true; gWorkflows.Actions.AddClick += gWorkflows_Add; gWorkflows.GridRebind += gWorkflows_GridRebind; // Block Security and special attributes (RockPage takes care of View) bool canAddEditDelete = IsUserAuthorized( Authorization.EDIT ); gWorkflows.Actions.ShowAdd = canAddEditDelete; gWorkflows.IsDeleteEnabled = canAddEditDelete; AddAttributeColumns(); var dateField = new DateTimeField(); gWorkflows.Columns.Add( dateField ); dateField.DataField = "CreatedDateTime"; dateField.SortExpression = "CreatedDateTime"; dateField.HeaderText = "Created"; dateField.FormatAsElapsedTime = true; var statusField = new BoundField(); gWorkflows.Columns.Add( statusField ); statusField.DataField = "Status"; statusField.SortExpression = "Status"; statusField.HeaderText = "Status"; statusField.HtmlEncode = false; var stateField = new BoundField(); gWorkflows.Columns.Add( stateField ); stateField.DataField = "State"; stateField.SortExpression = "CompletedDateTime"; stateField.HeaderText = "State"; stateField.HtmlEncode = false; var formField = new EditField(); gWorkflows.Columns.Add( formField ); formField.IconCssClass = "fa fa-edit"; formField.Click += formField_Click; var deleteField = new DeleteField(); gWorkflows.Columns.Add( deleteField ); deleteField.Click += gWorkflows_Delete; if ( !string.IsNullOrWhiteSpace( _workflowType.WorkTerm ) ) { gWorkflows.RowItemText = _workflowType.WorkTerm; lGridTitle.Text = _workflowType.WorkTerm.Pluralize(); } RockPage.PageTitle = _workflowType.Name; if ( !string.IsNullOrWhiteSpace( _workflowType.IconCssClass ) ) { lHeadingIcon.Text = string.Format("<i class='{0}'></i>", _workflowType.IconCssClass); } } else { pnlWorkflowList.Visible = false; } }