not possible this way, try to create a textbox in your control and remove Render methodclass YourControl : Control
{
  TextBox tb = new TextBox();  public string Text
  {
       get { return tb.Text;}
       set { tb.Text = value;}
  }  protected override void CreateChildControls()
  {
     Controls.Add(new LiteralControl("<table>")); //or create Table object here
     Controls.Add(new LiteralControl("<tr><td>"));
     Controls.Add(tb);
     Controls.Add(new LiteralControl("</td></tr>"));
     Controls.Add(new LiteralControl("</table>"));
  }
  
}

解决方案 »

  1.   

    you know what, if you insist, tryprotected override void Render(HtmlTextWriter writer)
    {
    writer.Write("<table>");
    writer.Write("<tr><td>");
    writer.Write(String.Format("<input type=text id='{0}' name='{0}'>", this.ClientID, this.UniqueID));
    writer.Write("</td></tr>");
    writer.Write("</table>");
    }in your main page's Page_Load, you doPage.RegisterStartupScript("startup",
     String.Format("<script>document.getElementById('{0}').value = '123';</script>", YourControl.ClientID));