Há momentos em que necessitamos recuperar o conteúdo HTML que é renderizado por um determinado controle. Um cenário típico é quando precisamos enviar o código HTML gerado por um controle DataGrid por email para um usuário. Isso evitará percorrer novamente a fonte de dados para montar uma String para definí-la como o corpo do email.
Facilmente, podemos recuperar este conteúdo sem muito código. Como todos os controles WebControls herdam direta ou indiretamente de System.Web.UI.Control, todos implementam o método RenderControl(HtmlTextWriter) e assim nos devolverá o conteúdo (em código HTML), por ele gerado. Veremos o código abaixo, que é necessário para recuperar:
|
|
Como vemos acima, estamos querendo recuperar o código HTML que é gerado pelo DataGrid1. Criamos um objeto do tipo StringWriter, qual armazenará o output do controle. Depois disso, passamos o StringWriter para o HtmlTextWriter que é responsável por recuperar os dados HTML já formatado. Após configurado o HtmlTextWriter, passamos ele para o método RenderControl do DataGrid (ou qualquer outro controle) e este por sua vez armazenará na StringWriter o retorno.