當要把一個控件的html代碼包括內容輸出時(比如導出word或excel或直接輸出來
或通過httpxmlrequest返回)就要使用控件的
rendcontrol()方法
比如gridview :
System
IO
StringWriter oStringWriter = new System
IO
StringWriter()
System
Web
UI
HtmlTextWriter oHtmlTextWriter = new System
Web
UI
HtmlTextWriter(oStringWriter)
MyGrid
RenderControl(oHtmlTextWriter)
Response
Write(oStringWriter
ToString())
Response
End()
頁面將建立一個HtmlTextWriter類的實例
在這個實例中封裝了相應流
接著頁面會把HtmlTextWriter對象傳遞給RenderControl
RenderControl會檢查控件的Visible屬性是否為真
如果是真
RenderControl會調用Render方法
而Render方法會去調用RenderContents
RenderContents方法負責將控件的內容呈現到指定的編寫器中
如果控件有子控件的話
Render方法又會把HtmlTextWriter傳遞給RenderChildren方法
RenderChildren方法負責生成控件的子控件
我們可以這樣認為rendercontrol方法先把控件內容輸出到htmlTextWriter
又因為ostringwriter跟htmltextwriter有關聯
所以內容也就存儲在ostringwriter中 繼而通過response
write(ostringwriter
tostring())輸出
From:http://tw.wingwit.com/Article/program/net/201311/13490.html