天天看點

Render,RenderChildren,RenderControl

protected internal virtual void Render(HtmlTextWriter writer)

{

    this.RenderChildren(writer);

}

protected internal virtual void RenderChildren(HtmlTextWriter writer)

{

    ICollection children = (this._occasionalFields == null) ? null : ((ICollection) this._occasionalFields.Controls);

    this.RenderChildrenInternal(writer, children);

}

internal void RenderChildrenInternal(HtmlTextWriter writer, ICollection children)

{

    if ((this.RareFields != null) && (this.RareFields.RenderMethod != null))

    {

        writer.BeginRender();

        this.RareFields.RenderMethod(writer, this);

        writer.EndRender();

    }

    else if (children != null)

    {

        foreach (Control control in children)

        {

            control.RenderControl(writer);

        }

    }

}

public virtual void RenderControl(HtmlTextWriter writer)

{

    this.RenderControl(writer, this.Adapter);

}

protected void RenderControl(HtmlTextWriter writer, ControlAdapter adapter)

{

    if (!this.flags[0x10] && !this.flags[0x200])

    {

        HttpContext context = (this.Page == null) ? null : this.Page._context;

        if ((context != null) && context.TraceIsEnabled)

        {

            int bufferedLength = context.Response.GetBufferedLength();

            this.RenderControlInternal(writer, adapter);

            int num2 = context.Response.GetBufferedLength();

            context.Trace.AddControlSize(this.UniqueID, num2 - bufferedLength);

        }

        else

        {

            this.RenderControlInternal(writer, adapter);

        }

    }

}

private void RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter)

{

    if (adapter != null)

    {

        adapter.BeginRender(writer);

        adapter.Render(writer);

        adapter.EndRender(writer);

    }

    else

    {

        this.Render(writer);

    }

}

Render----->RenderChilds---->RenderControl------Render

一個重寫Render的例子:

protected override void Render(HtmlTextWriter pOutPut)

        {

            pOutPut.Write("<Div Class=\"TabControl tab-pane\" ID=\"" + this.UniqueID + "_Tab\" Style=\"" + EPWebControl.GetControlStyle(this.Width, base.Style) + "\">");

            //隐藏的控件

            this.SelectedTab.RenderControl(pOutPut);

            //标簽頭部

            pOutPut.Write("<DIV Class=\"tab-row\">");

            this.RenderTabButton(pOutPut);

            pOutPut.Write("</Div><Div>");

            //标簽内容

            this.RenderTabContent(pOutPut);

            pOutPut.Write("</Div></Div>");

        }

private void RenderTabButton(HtmlTextWriter pOutPut)

        {

                for (int num1 = 0; num1 < this.Items.Count; num1++)

                {

                    if(this.Items[num1].Visible == true)

                    {

                        if (this.Items[num1].Selected)

                        {

                            pOutPut.Write("<H2 class=\"tab hover selected\" onMouseOver=\"Tab_OnMouseOver(this)\" onMouseOut=\"Tab_OnMouseOut(this)\">" + this.Items[num1].Caption + "</H2>");

                        }

                        else 

                        {

                            pOutPut.Write("<H2 class=\"tab\" onMouseOver=\"Tab_OnMouseOver(this)\" onMouseOut=\"Tab_OnMouseOut(this)\" onClick=\"Tab_OnSelectServerClick(this,\'" + this.Items[num1].UniqueID + "\');" + this.Page.GetPostBackEventReference(this, "") + "\">" + this.Items[num1].Caption + "</H2>");

                        }

                    }

                }

        }

private void RenderTabContent(HtmlTextWriter pOutPut)

        {

            for (int i = 0; i < this.Items.Count; i++)

            {

                if(this.Items[i].Visible == true)

                {

                    this.Items[i].RenderControl(pOutPut);

                }

            }

        }

item的 Render

protected override void Render(HtmlTextWriter pOutPut)

        {

            if(this.Visible)

            {

                if (this.Selected)

                {

                    pOutPut.Write(string.Concat(new object[] { "<DIV id=\"", this.UniqueID, "\" class=\"tab-page\" style=\"Height:", this._Owner.Height, ";Width:100%;DISPLAY: block\">" }));

                }

                else

                {

                    pOutPut.Write(string.Concat(new object[] { "<DIV id=\"", this.UniqueID, "\" class=\"tab-page\" style=\"Height:", this._Owner.Height, ";Width:100%;DISPLAY: none\">" }));

                }

            }

            this.RenderChildren(pOutPut);

            pOutPut.Write("</DIV>");

        }

Render,RenderChildren,RenderControl