Render methods in web parts in SharePoint
Today's blog post cover methods of rendering web parts. There are
some methods which you can use to render content of a web part. The
first method - override
RenderContens method. This method take
HtmlTextWriter as argument. So, you can use it to write to the output
any information. This code block illustrate how to do it:
protected override void RenderContents(HtmlTextWriter writer)
{
writer.Write("Hello world");
}
|
This method simply put text "Hello world" to the output stream of the web part.
Another way to render web part content - override
CreateChildControls:
protected override void CreateChildControls()
{
var lblHello = new Label {Text = "Hello world"};
Controls.Add(lblHello);
}
|
We'll get the same result as a previous one, but using
CreateChildControls method.
You can use the first method in a very simple scenarios, when there is
no need to render complex layout with many controls. The second method
fit situation when you must have several controls, but with rather
simple logic.
But what if we have several controls, but we want
insert this controls in a table or a div html tag? The third method help
us - we can use both of
RenderContents and
CreateChildControls overloads. Standard implementation of
RenderContents looks like this:
protected override void RenderContents(HtmlTextWriter writer)
{
foreach(Control control in Controls)
{
control.RenderControl(writer);
}
}
|
We can call
control.RenderControl method in the required sequence and enclosed controls with addition html tags if required. Here is an example:
[ToolboxItemAttribute(false)]
public class HelloWorldWebPart3 : WebPart
{
protected TextBox _txtName
protected Button _btnSave;
protected override void CreateChildControls()
{
_txtName = new TextBox();
_btnSave = new Button {Text = "Save"};
_btnSave.Click += btnSaveClick;
Controls.Add(_btnSave);
Controls.Add(_txtName);
}
private void btnSaveClick(object sender, EventArgs e)
{
}
protected override void RenderContents(HtmlTextWriter writer)
{
writer.RenderBeginTag(HtmlTextWriterTag.Div);
writer.Write("Please, enter your name:");
_txtName.RenderControl(writer);
writer.RenderBeginTag(HtmlTextWriterTag.Br);
writer.RenderEndTag();
_btnSave.RenderControl(writer);
writer.RenderEndTag();
}
}
No comments:
Post a Comment