导出Excel在单击button时出错

我正在实现的function,button上点击保存在gridview中的数据应该得到button点击导出,我从这里实现了function。

但是我得到错误,因为types'GridView'的控件'mainContent_grdTeacherProfile'必须被放置在runat =

grdTeacherProfile.RenderControl(hw); 

请参阅gridview的asps代码: –

 <asp:GridView ID="grdTeacherProfile" runat="server" Width="100%" border="1" Style="border: 1px solid #E5E5E5;" CellPadding="3" FooterStyle-BackColor="#e3e3e3" AutoGenerateColumns="false" AllowPaging="true" CssClass="hoverTable" DataKeyNames="Id" PageSize="4" ShowFooter="false" OnPreRender="PreRenderGrid" HeaderStyle-CssClass="k-grid td" OnDataBound="grdTeacherProfile_DataBound" OnPageIndexChanging="grdTeacherProfile_PageIndexChanging" OnRowDeleting="grdTeacherProfile_RowDeleting" OnRowCommand="grdTeacherProfile_RowCommand" EnableSortingAndPagingCallbacks="false" EmptyDataText="No records found"> <AlternatingRowStyle CssClass="k-alt" /> <Columns> <asp:TemplateField HeaderText="Select" ItemStyle-Width="5" > <ItemTemplate> <asp:CheckBox ID="chkDelete" runat="server" onClick="Check_Click(this)" /> </ItemTemplate> </asp:TemplateField> <asp:BoundField DataField="first_name" HeaderText="First Name" ItemStyle-Width="30" /> <asp:BoundField DataField="last_name" HeaderText="Last Name" ItemStyle-Width="30" /> <asp:BoundField DataField="dob" HeaderText="Date of Birth" ItemStyle-Width="20" ApplyFormatInEditMode="true" DataFormatString="{0:d}" /> <asp:BoundField DataField="gender" HeaderText="Gender" ItemStyle-Width="20" /> <asp:BoundField DataField="designation" HeaderText="Designation" ItemStyle-Width="20" /> <asp:BoundField DataField="joining_date" HeaderText="Joining Date" ItemStyle-Width="20" ApplyFormatInEditMode="true" DataFormatString="{0:d}" /> <asp:BoundField DataField="leaving_date" HeaderText="Leaving Date" ItemStyle-Width="20" ApplyFormatInEditMode="true" DataFormatString="{0:d}" /> <asp:BoundField DataField="active" HeaderText="Active" ItemStyle-Width="25" /> <asp:TemplateField HeaderText="Action" HeaderStyle-Width="5%"> <ItemTemplate> <asp:ImageButton ID="btnEdit" AlternateText="Edit" ImageUrl="~/images/edit.png" runat="server" Width="15" Height="15" CommandName="eEdit" CommandArgument='<%# Eval("Id") %>' CausesValidation="false" /> <asp:ImageButton ID="btnDelete" AlternateText="Delete" ImageUrl="~/images/delete.png" runat="server" Width="15" Height="15" CommandName="Delete" CommandArgument='<%# Eval("Id") %>' CausesValidation="false" OnClientClick="return confirm('Are you sure you want to delete this record?')" /> </ItemTemplate> </asp:TemplateField> </Columns> <PagerStyle ForeColor="#e3e3e3" BackColor="#e3e3e3" CssClass="grid-pagi" /> <PagerTemplate> <table runat="server" id="testTable1" style="width: 100%" class="hoverTable_tbl"> <tr> <td class="col-md-4 pull-left"> <asp:Label ID="MessageLabel" Text="Select a page:" runat="server" /> <asp:LinkButton ID="FirstLB" runat="server" CommandName="Page" CommandArgument="First" ToolTip="First" CssClass="btn-pager btn-default"><<</asp:LinkButton> <asp:LinkButton ID="PrevLB" runat="server" CommandName="Page" CommandArgument="Prev" ToolTip="Previous" CssClass="btn-pager btn-default"><</asp:LinkButton> <asp:DropDownList runat="server" ID="PageDropDownList" AutoPostBack="true" EnableViewState="true" OnSelectedIndexChanged="PageDropDownList_SelectedIndexChanged" CssClass="selectpicker form-control-drp"></asp:DropDownList> <asp:LinkButton ID="NextLB" runat="server" CommandName="Page" CommandArgument="Next" ToolTip="Next" CssClass="btn-pager btn-default">></asp:LinkButton> <asp:LinkButton ID="LastLB" runat="server" CommandName="Page" CommandArgument="Last" ToolTip="Last" CssClass="btn-pager btn-default">>></asp:LinkButton> </td> <td class="col-md-3"> <div> <div class="pull-left"><asp:Label ID="PageSizeLabel" CssClass="page-size" runat="server" Text="Select Page Size: "></asp:Label> <asp:DropDownList ID="ddlPageSize" runat="server" OnSelectedIndexChanged="ddlPageSize_SelectedIndexChanged" AutoPostBack="true" CssClass="selectpicker form-control-drp"> <%-- <asp:ListItem Value="0" Text="0" />--%> <asp:ListItem Value="1" Text="1" /> <asp:ListItem Value="2" Text="2" /> <asp:ListItem Value="3" Text="3" /> </asp:DropDownList> </div> <div> <asp:Label ID="CurrentPageLabel" CssClass="view" runat="server" /> </div> </div> </td> </tr> </table> </PagerTemplate> <RowStyle /> </asp:GridView> 

使用iTextSharp等第三方,将GridView导出到Excel更容易。

如果你想知道如何使它工作,你可以检查这个示例代码:

http://dotnetfrommanila.blogspot.com/2013/04/convert-gridview-to-excel-in-c.html

我希望它能帮助你。

我自己完成了,

其实我忘了添加下面的代码和EnableEventValidation="false"

代码是:

 public override void VerifyRenderingInServerForm(Control control) { /* Verifies that the control is rendered */ } 

它的工作。