解决方案 »

  1.   

    下面是我给你修正后的控件类, 可以呈现了: 
    public class PagerView : GridView, INamingContainer
        {
            TextBox tb;        protected override void CreateChildControls()
            {
                tb = new TextBox();
                tb.ID = "mybox ";
                this.Controls.Add(tb);
            }        protected override void Render(HtmlTextWriter writer)
            {
                base.Render(writer); //这里是默认的Render方法, 只Render GridView控件            //Render自己的TextBox控件
                tb.RenderControl(writer);                   }
        } 页面:    <cc1:PagerView ID="PagerView1" runat="server">
        </cc1:PagerView>
        protected void Page_Load(object sender, EventArgs e)
        {
            ArrayList a = new ArrayList();
            a.Add("aaa");
            this.PagerView1.DataSource = a;
            this.PagerView1.DataBind();
        }原因: WebControl作为基类能够呈现出TextBox要跟WebControl基类的实现机制有关系. 但GridView机制不同. 
    建议你看一下:
    http://blog.csdn.net/ChengKing/archive/2008/08/18/2792440.aspx
    我共享的: 第3章  从零开始开发服务器控件.学习控件开发要系统的学习一下, 才能活用.  
      

  2.   

    近期我会共享这些章节:      第2章  服务器控件开发中的调试技术                   
         第3章  从零开始开发服务器控件                      
         第4章  服务器控件属性                                
         第5章  事件和数据回发机制                             
         第6章  页面状态机制(视图状态和控件状态)          庖丁解牛:纵向切入Asp.net 3.5控件和组件开发技术--基于VS 2008(兼容VS 2005)/C#
     http://blog.csdn.net/ChengKing/archive/2008/08/18/2792440.aspx 本书除了讲控件开发, 还把系统的大部分控件基类非常透彻的解析了一遍.   
      

  3.   

    还有一点:public class PagerView : GridView, INamingContainer完全可以改为:public class PagerView : GridView, INamingContainer
    因为GridView为复合控件, 它已经继承了INamingContainer了.  但以WebControl和Control作为基类创建
    复合控件时要增加继承INamingContainer接口.