ChildControls state

  • Thread starter Thread starter mauricio
  • Start date Start date
M

mauricio

Hi,

Sorry for my english.

I have a custom server control that derive from Panel.

In my control I want to add an Checkbox, but after an postback it
checkbox lost the state of checked property.

My code:

public class CheckboxPanel : System.Web.UI.WebControls.Panel,
IPostBackDataHandler
{
private CheckBox _chk = new CheckBox();

protected override void CreateChildControls()
{
_chk = new CheckBox();
_chk.ID = this.ClientID + "_chk";
}

public override void RenderBeginTag(HtmlTextWriter writer)
{
base.RenderBeginTag(writer);

writer.AddStyleAttribute(HtmlTextWriterStyle.Width,
"100%");

writer.RenderBeginTag(HtmlTextWriterTag.Table);

writer.RenderBeginTag(HtmlTextWriterTag.Tr);

writer.RenderBeginTag(HtmlTextWriterTag.Td);

_chk.RenderControl(writer);

writer.RenderEndTag(); // TD

writer.RenderEndTag(); // TR

writer.RenderBeginTag(HtmlTextWriterTag.Tr);

writer.RenderBeginTag(HtmlTextWriterTag.Td);
}

public override void RenderEndTag(HtmlTextWriter writer)
{
writer.RenderEndTag();
writer.RenderEndTag();
writer.RenderEndTag();

base.RenderEndTag(writer);
}
}
 
the ceckbox you create is private variable, not a child of your control, so
that your code is handling the event cycle for the checkbox. you need to
handle the loadpostbackdata event also if you want postback data loaded. you
can either fire the event, or load the postback yourself.

the other approach is to make the checkbox a real child. create table (or
generic) objects in CreateChildControls and add to your Controls collection,
then add the checkbox to the proper child.

-- bruce (sqlwork.com)
 
Back
Top