Render,RenderChildren,RenderControl

Render,RenderChildren,RenderControlprotectedinternalvirtualvoidRender(HtmlTextWriterwriter){this.RenderChildren(writer);}protectedinternalvirtualvoidRenderChildren(HtmlTextWriterwriter){ICollectionchildren=(th…

大家好,又见面了,我是你们的朋友全栈君。

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>

);
        }

 

 

转载于:https://www.cnblogs.com/kasafuma/archive/2011/04/06/2006666.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/162033.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 函数模版特化(类模板的实例化在什么阶段)

    本文转自:https://www.cnblogs.com/dracohan/p/3401660.html 转来收藏以便查阅,感谢原作者今天在写代码时,遇到了模板和特化,在网上找了资料后问题呗一一解决,转载此文用于以后查阅,感谢原创者。其中增加了我自己的总结:特化函数与模板函数的区别:(1)、模板函数的T参数只能传入类类型的参数;特化函数的参数只能传入对应的参数类型,基本类型或类类型。…

    2022年4月17日
    62
  • 如何在vue组件中引入外部的css和js文件[通俗易懂]

    如何在vue组件中引入外部的css和js文件[通俗易懂]在使用vue框架开发时,我们都知道一个组件中可以同时写HTML、css、js代码,只需三个标签而已,如下:但是要真把所有的代码都写入一个组件文件当中,那么代码量是非常大的,极不便于修改和维护,这时就需要把css样式和js代码写到其他文件下,再引入组件当中。具体方法如下:在组件中引入css文件:<style>@importurl(css文件路径)</style>在组件中引入js文件:首先需要将我们…

    2022年10月8日
    0
  • PointRCNN 3D框点云和图像可视化

    PointRCNN 3D框点云和图像可视化

    2020年11月8日
    349
  • linux抓包命令详解_linux抓包命令指定ip和端口

    linux抓包命令详解_linux抓包命令指定ip和端口linux抓包命令tcpflow-cieth0dstport6060tcpdump-ieth0dstport6060案例:参考文档:https://blog.csdn.net/weixin_34124651/article/details/88267519

    2022年10月10日
    0
  • 超硬核!小白读了这篇文章,就能在算法圈混了[通俗易懂]

    作为一只超级硬核的兔子,从来不给你说废话,只有最有用的干货!这些神级算法送给你目录第一节1.1bogo排序1.2位运算1.3打擂台1.4morris遍历第二节2.1睡眠排序2.2会死的兔子2.3矩阵快速幂2.4摔手机/摔鸡蛋时空复杂度目录二分尝试较优的策略归纳表达式写出暴力递归改为动态规划压缩空间四边形不等式优化换一种思路最优解测试:第三节3.1斐波那契之美3.2桶排序3.3快速排序…

    2022年4月17日
    45
  • UpdatePanel控件的使用(实现局部刷新,ajax)

    UpdatePanel控件的使用(实现局部刷新,ajax)ScriptManager和UpdatePanel控件联合使用可以实现页面异步局部更新的效果。其中的UpdatePanel就是设置页面中异步局部更新区域,它必须依赖于ScriptManager存在,因为ScriptManger控件提供了客户端脚本生成与管理UpdatePanel的功能。几个重要的属性:   ScriptManager控件的EnablePartialRendering属

    2022年7月23日
    7

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号