2016-06-13 70 views
0

我想出口到excel一个简单的gridview,当我想呈现gridview控制到一个HtmlTextWriter我得到一个空字符串,同时当我正在做一个quickview到gridview它显示我行存在。GridView RenderControl不工作?

代码我使用,

protected void btnExportAuto_Click(object sender, EventArgs e) 
{ 
    Response.Clear(); 
    Response.AddHeader("content-disposition", "attachment;filename=FileName.xls"); 
    Response.Charset = ""; 
    Response.ContentType = "application/vnd.xls"; 
    System.IO.StringWriter stringWrite = new System.IO.StringWriter(); 
    System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite); 
    gvNoDataFound.RenderControl(htmlWrite); 
    Response.Write(stringWrite.ToString()); 
    Response.Flush(); 
    Response.End(); 
} 

public override void VerifyRenderingInServerForm(Control control) 
{ 
    // 
} 

ASPX:

<asp:GridView ID="gvNoDataFound" runat="server" Visible="False" AutoGenerateColumns="false" Width="100%"> 
    <Columns> 
     <asp:TemplateField HeaderText="ApplicationID" HeaderStyle-Width="150px" ItemStyle-Width="150px"> 
      <ItemTemplate> 
       <asp:Label ID="lblApplicationID2" runat="server" Text='<%# Bind("ApplicationID") %>'></asp:Label> 
      </ItemTemplate> 
      <HeaderStyle CssClass="gridHeader" /> 
     </asp:TemplateField> 
     <asp:TemplateField HeaderText="ApplicationTransactionID" HeaderStyle-Width="150px" ItemStyle-Width="150px"> 
      <ItemTemplate> 
       <asp:Label ID="lblApplicationTransactionID2" runat="server" Text='<%# Bind("ApplicationTransactionID") %>'></asp:Label> 
      </ItemTemplate> 
      <HeaderStyle CssClass="gridHeader" /> 
     </asp:TemplateField> 
     <asp:TemplateField HeaderText="Comment" HeaderStyle-Width="150px" ItemStyle-Width="150px"> 
      <ItemTemplate> 
       <asp:Label ID="lblComment2" runat="server" Text='<%# Bind("Comment") %>'></asp:Label> 
      </ItemTemplate> 
      <HeaderStyle CssClass="gridHeader" /> 
     </asp:TemplateField> 
    </Columns> 
</asp:GridView> 

不知道我缺少做傻事,我把一切都放在RUNAT = “服务器”,仍然没有运气

回答

0

对于GridView,RenderControl的输出为空,因为Visible="false"。您可以在呈现内容之前将其设置为可见:

gvNoDataFound.Visible = true; 
gvNoDataFound.RenderControl(htmlWrite); 
gvNoDataFound.Visible = false;