/// <summary> /// When implemented by a class, defines the <see cref="T:System.Web.UI.Control"/> object that child controls and templates belong to. These child controls are in turn defined within an inline template. /// </summary> /// <param name="container">The <see cref="T:System.Web.UI.Control"/> object to contain the instances of controls from the inline template.</param> public void InstantiateIn(Control container) { DataControlFieldCell cell = container as DataControlFieldCell; if (cell != null) { LinkButtonField linkButtonField = cell.ContainingField as LinkButtonField; LinkButtonField = linkButtonField; ParentGrid = linkButtonField.ParentGrid; LinkButton linkButton = new LinkButton(); linkButton.ID = linkButtonField.ID; linkButton.CausesValidation = false; linkButton.CssClass = linkButtonField.CssClass; linkButton.Text = linkButtonField.Text; linkButton.ToolTip = linkButtonField.ToolTip; linkButton.Click += linkButton_Click; linkButton.DataBinding += linkButton_DataBinding; linkButton.PreRender += (s, e) => { if (linkButton.Enabled) { // make sure button is registered for async postback (needed just in case the grid was created at runtime) var sm = ScriptManager.GetCurrent(this.ParentGrid.Page); sm.RegisterAsyncPostBackControl(linkButton); } }; cell.Controls.Add(linkButton); } }
/// <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 Place Elsewhere column /// </summary> private void AddPlaceElsewhereColumn() { LinkButtonField btnPlaceElsewhere = new LinkButtonField(); btnPlaceElsewhere.ItemStyle.HorizontalAlign = HorizontalAlign.Center; btnPlaceElsewhere.HeaderStyle.CssClass = "grid-columncommand"; btnPlaceElsewhere.ItemStyle.CssClass = "grid-columncommand"; btnPlaceElsewhere.Text = "<i class='fa fa-share'></i>"; btnPlaceElsewhere.CssClass = "btn btn-default"; btnPlaceElsewhere.ToolTip = "Place Elsewhere"; btnPlaceElsewhere.Click += btnPlaceElsewhere_Click; gGroupMembers.Columns.Add( btnPlaceElsewhere ); }