تنها یک روش عملی و خاص برای اینکار وجود داره و اون هم استفاده از متد RenderControl کنترل DataGrid هست.
تمامی کنترل های وب در ASP.NET دارای این متد هستند.
این متد از کلاس Controls به ارث می بره.
این متد، خروجی HTML کنترل ایجاد شده (خروجی ای که از پردازش موتور ASP.NET ایجاد میشه) رو در متغیری از نوع کلاس HtmlTextWriter قرار میده.
کلاس htmlTextWriter نیز محتویاتش رو به کلاس StringWriter پاس میده و این کلاس نیز کلاس StringBuilder رو ایجاد می کنه.
بعد از اتمام Render، یک خروجی از نوع String از کلاس StringBuilder به دست میاد که باید در یک متغیر رشته ای قرارش بدی و در آخر، برای آنکه به مرورگر بفهمونی که این یک متن HTML هست نه یک متن معمولی، باید با استفاده از متد HtmlEncode کلاس httpUtility یا Server، اون رو به اچ تی ام ال، Encode کنی و در پایان چاپش کنی.
با سلسله مراتبی پدر-فرزندی که توضیح دادم، به راحتی می تونی جواب سوالت رو پیاده سازی کنی:
کد:
Dim SB as New StringBuilder()
Dim SW as New StringWriter(SB)
Dim htmlTW as New HtmlTextWriter(SW)
DataGrid1.RenderControl(htmlTW)
Dim dataGridHTML as String = SB.ToString()
myLiteralControl.Text = Server.HtmlEncode(dataGridHTML)
موفق باشید.