Tool Part Class Implementation with the ability to specify Table Layout properties
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