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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 给js对象添加属性和方法属性_js给json对象添加属性

    给js对象添加属性和方法属性_js给json对象添加属性方式一:在定义对象时,直接添加属性和方法functionPerson(name,age){ this.name=name; this.age=age; this.say=function(){ alert(name+’:::’+age); }}varperson=newPerson(‘张三’,24);person.say();方式二:…

    2022年10月24日
  • EJB学习笔记一(EJB概述)

    EJB学习笔记一(EJB概述)1.前言从今天开始,简单的学习一下有关EJB方面的知识.从自己看EJB有关方面的书籍来看,感觉跟市面上的Spring很像,后来才发现,整个Spring框架实际上是参考了EJB的设计理念,由于学习过Spring,所以现在学习EJB的相关知识,并不是很吃力.接下来会在几篇博客中,简单的书写一下,自己的EJB的认识. 2.什么是EJBEJB全名为EnterpriseJa

    2022年9月30日
  • android_使用ViewPager和Fragment实现滑动导航

    ViewPage是android-support-v4.jar包提供的用于页面滑动的库.这里没有将整个实现过程记录,只是把知识点摘出来单独解释.可参照代码自己实现.1.在xml布局文件中添加android.support.v4.view.ViewPager容器及显示导航所用标签android.support.v4.view.PagerTitleStrip,如我添加的xml内容如下

    2022年3月9日
  • java函数式编程实例(函数式编程实例)

    描述:一元运算,接受一个T类型参数,输出一个与入参类型一样的值源码:publicinterfaceUnaryOperatorextendsFunction{/***Returnsaunaryoperatorthatalwaysreturnsitsinputargument.**@paramth

    2022年4月12日
  • FM/FFM

    FM/FFMFM背景及相关算法对比(1)FM(factorizationmachine)是在LR(logisticregression)基础上,加入了特征的二阶组合项;(2)SVM和FM的主要区别在于,SVM的二元特征交叉参数是独立的,如wijw_{ij}wij​,而FM的二元特征交叉参数是两个k维的向量vi、vjv_i、v_jvi​、vj​,即&lt;vi,vj&gt;&lt…

    2022年5月2日
  • leetcode数组汇总_leetcode经典题

    leetcode数组汇总_leetcode经典题原题链接给定一个由整数数组 A 表示的环形数组 C,求 C 的非空子数组的最大可能和。在此处,环形数组意味着数组的末端将会与开头相连呈环状。(形式上,当0 <= i < A.length 时 C[i] = A[i],且当 i >= 0 时 C[i+A.length] = C[i])此外,子数组最多只能包含固定缓冲区 A 中的每个元素一次。(形式上,对于子数组 C[i], C[i+1], …, C[j],不存在 i <= k1, k2 <= j 其中 k1 % A.leng

    2022年8月8日

发表回复

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

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