Nous essayons de prendre le HTML à partir d'un GridView et le stocker dans une chaîne de sorte que cette chaîne puisse être utilisée comme un corps d'un e-mail.Conversion de HTML GridView ASP.Net en une chaîne
Jusqu'à présent, nous avons utilisé ce codage dans le code-behind:
Protected Sub EmailStudentList()
' Get the rendered HTML.
'-----------------------
Dim SB As New StringBuilder()
Dim SW As New StringWriter(SB)
Dim htmlTW As New HtmlTextWriter(SW)
GridViewSummary.RenderControl(htmlTW)
' Get the HTML into a string.
' This will be used in the body of the email report.
'---------------------------------------------------
Dim dataGridHTML As String = SB.ToString()
MsgBox(Server.HtmlEncode(dataGridHTML))
End Sub
Lorsque l'application est en cours d'exécution cette erreur est affiché:
Control 'BodyPlaceholder_GridViewSummary' of type 'GridView' must be placed
inside a form tag with runat=server.
donc je placé une balise de formulaire à cet endroit dans le balisage:
<asp:Content
ID="ContentBody"
ContentPlaceHolderID="BodyPlaceholder"
runat="server">
<form runat="server">
maintenant, nous obtenons cette erreur:
A page can have only one server-side Form tag.
Il n'existe aucune autre balise de forme nulle part ailleurs dans le balisage.
C'est le balisage pour le GridView:
<asp:GridView
ID="GridViewSummary"
runat="server"
AllowPaging="True"
AllowSorting="True"
AutoGenerateColumns="False">
<Columns>
<asp:BoundField DataField="Surname" HeaderText="Last Name" SortExpression="Surname" />
<asp:BoundField DataField="Forename" HeaderText="First Name" SortExpression="Forename" />
<asp:BoundField DataField="ParentName" HeaderText="Parents" SortExpression="ParentName" />
</Columns>
</asp:GridView>
Utilisez-vous une page maître? – mcalex
Oui, nous le faisons. –
Vous trouverez probablement votre contrôle de formulaire manquant dans la page maître. Peut-être qu'il manque l'attribut 'runat =" server "' – mcalex