Rich Textbox Problem

Discussion in 'ASP .Net Building Controls' started by wolfgang, Jul 8, 2008.

  1. wolfgang

    wolfgang Guest

    I'd like to create a rich textbox which inherits from TextBox:

    public class MyTextBox : TextBox
    {
    protected override void Render(HtmlTextWriter writer)
    {
    base.Render(writer);
    LinkButton button = new LinkButton();
    button.Text = "Button";
    button.RenderControl(writer);
    }
    }

    But in the output produced the linkbutton is no longer a LinkButton
    but just plain text. If i inherit from CompositeControl everything
    woks find but then my testbox is no longer a TextBox.

    Is there a way to make my linkbutton work and my textbox remains a
    TextBox?
     
    wolfgang, Jul 8, 2008
    #1
    1. Advertisements

  2. Hi wolfgang
    Should work.
    But be sure to give the control a ID.

    What is the produced Output looks like?
     
    Peter Bucher [MVP], Jul 9, 2008
    #2
    1. Advertisements

  3. wolfgang

    wolfgang Guest

    Hi Peter,

    the output produced is a TextBox and the text of the button. The
    functionality of the LinkButton is lost. It's just text and not a
    link.

    Wolfgang
     
    wolfgang, Jul 11, 2008
    #3
  4. Hi Wolfgang

    Do it like so:
    public class MyTextBox : TextBox
    {
    protected override void OnInit(.....) {
    LinkButton b = new LinkButton();
    b.ID = "someID";
    b.Text = "someText";
    this.Controls.Add(b);
    }
    protected override void Render(HtmlTextWriter writer)
    {
    base.Render(writer);
    button.RenderControl(writer);
    }
    }
     
    Peter Bucher [MVP], Jul 11, 2008
    #4
  5. wolfgang

    wolfgang Guest

    Many thaks, Peter. The control is working, now. The source code now
    is:

    public class MyTextBox : TextBox
    {
    protected override void OnInit(EventArgs e)
    {
    LinkButton button = new LinkButton();
    button.Text = "Button";
    this.Controls.Add(button);
    }
    protected override void Render(HtmlTextWriter writer)
    {
    base.Render(writer);
    base.RenderChildren(writer);
    }
    }

    Wolfgang
     
    wolfgang, Jul 11, 2008
    #5
    1. Advertisements

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.