Created
November 6, 2012 10:40
-
-
Save vgrem/4023970 to your computer and use it in GitHub Desktop.
Tool Part Class Implementation with the ability to specify Table Layout properties
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using System.Globalization; | |
using System.Web.UI.WebControls; | |
namespace CQWPWithTableLayout.WebControls | |
{ | |
public class CBQTableLayoutToolPart : Microsoft.SharePoint.WebPartPages.ToolPart | |
{ | |
public CBQTableLayoutToolPart() | |
{ | |
Init += InitToolPart; | |
} | |
private void InitToolPart(object sender, EventArgs e) | |
{ | |
Title = "Table Layout Settings"; | |
_targetWebPart = ParentToolPane.SelectedWebPart as CBQTableLayout; | |
if (_targetWebPart == null) | |
throw new Exception("Wrong web part type error"); | |
} | |
protected override void CreateChildControls() | |
{ | |
CreateTableLayoutSection(); | |
PopulateTableLayoutSection(); | |
base.CreateChildControls(); | |
} | |
public override void ApplyChanges() | |
{ | |
this.ApplySettingsSectionChanges(); | |
base.ApplyChanges(); | |
} | |
private void CreateTableLayoutSection() | |
{ | |
_columnsBox = new TextBox {MaxLength = 2}; | |
_directionBox = new DropDownList(); | |
var mainTable = new Table { CellPadding = 2, CellSpacing = 2 }; | |
mainTable.Style["border-collapse"] = "collapse"; | |
//Repeat Columns | |
AddRepeatColumnsProperty(mainTable); | |
//Repeat Direction | |
AddRepeatDirectionProperty(mainTable); | |
Controls.Add(mainTable); | |
} | |
private void AddRepeatColumnsProperty(Table section) | |
{ | |
var rowHeader = new TableRow(); | |
var cellHeader = new TableCell { Text = "Repeat Columns" }; | |
rowHeader.Cells.Add(cellHeader); | |
section.Rows.Add(rowHeader); | |
var rowItem = new TableRow(); | |
var cellItem = new TableCell(); | |
cellItem.Controls.Add(_columnsBox); | |
rowItem.Cells.Add(cellItem); | |
section.Rows.Add(rowItem); | |
} | |
private void AddRepeatDirectionProperty(Table section) | |
{ | |
var rowHeader = new TableRow(); | |
var cellHeader = new TableCell { Text = "Repeat Direction" }; | |
rowHeader.Cells.Add(cellHeader); | |
section.Rows.Add(rowHeader); | |
var rowItem = new TableRow(); | |
var cellItem = new TableCell(); | |
cellItem.Controls.Add(_directionBox); | |
rowItem.Cells.Add(cellItem); | |
section.Rows.Add(rowItem); | |
} | |
private void PopulateTableLayoutSection() | |
{ | |
_columnsBox.Text = _targetWebPart.RepeatColumns.ToString(CultureInfo.InvariantCulture); | |
var directions = Enum.GetValues(typeof(RepeatDirection)); | |
_directionBox.DataSource = directions; | |
_directionBox.DataBind(); | |
_directionBox.Text = _targetWebPart.RepeatDirection.ToString(); | |
} | |
protected void ApplySettingsSectionChanges() | |
{ | |
_targetWebPart.RepeatColumns = int.Parse(_columnsBox.Text); | |
_targetWebPart.RepeatDirection = (RepeatDirection)Enum.Parse(typeof(RepeatDirection), _directionBox.Text); | |
} | |
private TextBox _columnsBox; | |
private DropDownList _directionBox; | |
private CBQTableLayout _targetWebPart; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment