
Muthiullah
Top achievements
Rank 1
Muthiullah
asked on 06 Mar 2013, 02:07 PM
I need to know how to convert the Rad grid to html in order to add the Radgrid in emailbody.
4 Answers, 1 is accepted
0

Jayesh Goyani
Top achievements
Rank 2
answered on 07 Mar 2013, 05:22 AM
Hello,
Thanks,
Jayesh Goyani
protected
void
YourEventName(
object
sender, EventArgs e)
{
StringBuilder sb =
new
StringBuilder();
StringWriter tw =
new
StringWriter(sb);
HtmlTextWriter hw =
new
HtmlTextWriter(tw);
RadGrid1.RenderControl(hw);
sb.ToString();
// Acess your Html Code here
}
<
telerik:RadGrid
ID
=
"RadGrid1"
runat
=
"server"
AutoGenerateColumns
=
"False"
OnNeedDataSource
=
"RadGrid1_NeedDataSource"
AllowPaging
=
"false"
AllowFilteringByColumn
=
"false"
ShowFooter
=
"true"
AllowMultiRowSelection
=
"true"
AllowMultiRowEdit
=
"true"
PageSize
=
"10"
RegisterWithScriptManager
=
"false"
>
<
ExportSettings
ExportOnlyData
=
"true"
>
</
ExportSettings
>
<
MasterTableView
EditMode
=
"EditForms"
Name
=
"Parent"
DataKeyNames
=
"ID"
InsertItemPageIndexAction
=
"ShowItemOnCurrentPage"
ClientDataKeyNames
=
"ID"
>
<
Columns
>
<
telerik:GridBoundColumn
DataField
=
"ID"
UniqueName
=
"ID"
HeaderText
=
"ID"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"Name"
UniqueName
=
"Name"
HeaderText
=
"Name"
>
</
telerik:GridBoundColumn
>
</
Columns
>
</
MasterTableView
>
</
telerik:RadGrid
>
protected
void
RadGrid1_NeedDataSource(
object
sender, GridNeedDataSourceEventArgs e)
{
dynamic data =
new
[] {
new
{ ID = 1, Name =
"Name1"
,Comments=
""
},
new
{ ID = 2, Name =
"Name2"
,Comments=
""
},
new
{ ID = 3, Name =
"Name3"
,Comments=
"ABC"
},
new
{ ID = 4, Name =
"Name4"
,Comments=
"XYZ"
},
new
{ ID = 5, Name =
"Name5"
,Comments=
""
}
};
RadGrid1.DataSource = data;
}
Thanks,
Jayesh Goyani
0

Shinu
Top achievements
Rank 2
answered on 07 Mar 2013, 05:22 AM
Hi,
Try the following code to achieve your scenario.
Thanks,
Shinu
Try the following code to achieve your scenario.
protected
void
Button2_Click(
object
sender, EventArgs e)
{
StringBuilder SB =
new
StringBuilder();
StringWriter SW3 =
new
StringWriter(SB);
HtmlTextWriter htmlTW =
new
HtmlTextWriter(SW3);
RadGrid1.RenderControl(htmlTW);
StringWriter oStringWriter =
new
StringWriter();
HtmlTextWriter oHtmlTextWriter =
new
HtmlTextWriter(oStringWriter);
RadGrid1.RenderControl(oHtmlTextWriter);
string
html = oHtmlTextWriter.ToString();
}
Thanks,
Shinu
0

Margo Noreen
Top achievements
Rank 1
Iron
Veteran
answered on 06 Jul 2020, 08:20 PM
Is there any updated solution to this? When I try this code on a grid with a GridCheckBoxColumn, I get an exception:
[HttpException (0x80004005): Control 'ctl00_ContentPlaceHolder1_radGrid1_ctl00_ctl04_ctl00' of type 'CheckBox' must be placed inside a form tag with runat=server.]
The exception is also thrown when it's a TemplateColumn with an "asp:Checkbox" control in the ItemTemplate
0
Hi Margo,
When the Grid contains a server controls (in CheckBox column or a template column) you have to make sure that the RenderControl() call is made inside the override of the Render event.
For example:
<telerik:RadGrid ID="RadGrid1" runat="server" AutoGenerateColumns="False" OnNeedDataSource="RadGrid1_NeedDataSource"
AllowPaging="false" AllowFilteringByColumn="false" ShowFooter="true" AllowMultiRowSelection="true"
AllowMultiRowEdit="true" PageSize="10" RegisterWithScriptManager="false">
<ExportSettings ExportOnlyData="true">
</ExportSettings>
<MasterTableView EditMode="EditForms" Name="Parent" DataKeyNames="ID" InsertItemPageIndexAction="ShowItemOnCurrentPage"
ClientDataKeyNames="ID">
<Columns>
<telerik:GridCheckBoxColumn UniqueName="CheckboxColumns"></telerik:GridCheckBoxColumn>
<telerik:GridBoundColumn DataField="ID" UniqueName="ID" HeaderText="ID">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="Name" UniqueName="Name" HeaderText="Name">
</telerik:GridBoundColumn>
</Columns>
</MasterTableView>
</telerik:RadGrid>
<telerik:RadButton ID="testButton" runat="server" Text="Generate" OnClick="testButton_Click"></telerik:RadButton>
<asp:Label ID="resultPanel" runat="server"></asp:Label>
bool isPrinting = false;
protected void RadGrid1_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
{
dynamic data = new[] {
new { ID = 1, Name ="Name1",Comments=""},
new { ID = 2, Name = "Name2",Comments=""},
new { ID = 3, Name = "Name3",Comments="ABC"},
new { ID = 4, Name = "Name4",Comments="XYZ"},
new { ID = 5, Name = "Name5",Comments=""}
};
RadGrid1.DataSource = data;
}
protected void testButton_Click(object sender, EventArgs e)
{
isPrinting = true;
}
protected override void Render(HtmlTextWriter writer)
{
if (isPrinting)
{
isPrinting = false;
StringBuilder sb = new StringBuilder();
StringWriter tw = new StringWriter(sb);
HtmlTextWriter hw = new HtmlTextWriter(tw);
//test
RadGrid1.RenderControl(hw);
resultPanel.Text = sb.ToString();
}
base.Render(writer);
}
public override void VerifyRenderingInServerForm(Control control)
{
if (!isPrinting)
base.VerifyRenderingInServerForm(control);
}
Regards,
Vessy
Progress Telerik
Progress is here for your business, like always. Read more about the measures we are taking to ensure business continuity and help fight the COVID-19 pandemic.
Our thoughts here at Progress are with those affected by the outbreak.
Our thoughts here at Progress are with those affected by the outbreak.