我有一个asp.net应用程序,我在其中显示一个网格视图,其代码如下所示
<center><asp:GridView ID="GridView1" runat="server"
RowStyle-HorizontalAlign="Center" CellPadding="4" ForeColor="#333333"
GridLines="None">
<AlternatingRowStyle BackColor="White" />
<FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#FFCC66" ForeColor="#333333" HorizontalAlign="Center" />
<RowStyle HorizontalAlign="Center" BackColor="#FFFBD6" ForeColor="#333333"></RowStyle>
<SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="Navy" />
<SortedAscendingCellStyle BackColor="#FDF5AC" />
<SortedAscendingHeaderStyle BackColor="#4D0000" />
<SortedDescendingCellStyle BackColor="#FCF6C0" />
<SortedDescendingHeaderStyle BackColor="#820000" />
</asp:GridView>
</center>
<center> <table>
<tr>
<td>
<asp:Button ID="btnWordConvert" runat="server" Text="Button"
onclick="btnWordConvert_Click" />
</td>
</tr>
</table>
</center>
in cs
protected void btnWordConvert_Click(object sender, EventArgs e)
{
GridView1.AllowPaging = false;
GridView1.DataBind();
Response.ClearContent();
Response.AddHeader("content-disposition", string.Format("attachment; filename={0}", "Customers.doc"));
Response.Charset = "";
Response.ContentType = "application/ms-word";
StringWriter sw = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
GridView1.RenderControl(htw);
Response.Write(sw.ToString());
Response.End();
}
我在GridView1.RenderControl(htw);
行收到错误,错误为Control 'ctl00_ContentPlaceHolder1_GridView1' of type 'GridView' must be placed inside a form tag with runat=server.
感谢任何帮助。
答案 0 :(得分:1)
您获得此功能的原因是,通过调用GridView.RenderControl(HtmlTextWriter)在表单标记之外呈现服务器控件。
您可以通过覆盖VerifyRenderingInServerForm来避免这种情况。
查看this。
答案 1 :(得分:1)
将您的代码放在表单标记中。
<form id="form1" runat="server">
//put your code here
</form>
答案 2 :(得分:0)
请确保您的gridview位于表单标记内。
<form id="form1" runat="server">
<asp:GridView ID="GridView1" runat="server"
RowStyle-HorizontalAlign="Center" CellPadding="4" ForeColor="#333333"
GridLines="None">
... ... ...
</asp:GridView>
</form>
答案 3 :(得分:0)
采用以下方法
public override void VerifyRenderingInServerForm(Control control)
{
/* Verifies that the control is rendered */
}