当要把一个控件的html代码包括内容输出时(比如导出word或excel或直接输出来
或通过httpxmlrequest返回)就要使用控件的
rendcontrol()方法比如gridview :
SystemIOStringWriter oStringWriter = new SystemIOStringWriter()
SystemWebUIHtmlTextWriter oHtmlTextWriter = new SystemWebUIHtmlTextWriter(oStringWriter)
MyGridRenderControl(oHtmlTextWriter)
ResponseWrite(oStringWriterToString())
ResponseEnd()
页面将建立一个HtmlTextWriter类的实例在这个实例中封装了相应流接着页面会把HtmlTextWriter对象传递给RenderControlRenderControl会检查控件的Visible属性是否为真如果是真RenderControl会调用Render方法而Render方法会去调用RenderContentsRenderContents方法负责将控件的内容呈现到指定的编写器中如果控件有子控件的话Render方法又会把HtmlTextWriter传递给RenderChildren方法RenderChildren方法负责生成控件的子控件
我们可以这样认为rendercontrol方法先把控件内容输出到htmlTextWriter又因为ostringwriter跟htmltextwriter有关联所以内容也就存储在ostringwriter中 继而通过responsewrite(ostringwritertostring())输出