首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GridView RenderControl不工作了吗?

GridView RenderControl不工作了吗?
EN

Stack Overflow用户
提问于 2016-06-14 00:32:59
回答 1查看 1.2K关注 0票数 0

我正在尝试导出到excel一个简单的网格视图,当我试图渲染网格视图控件到一个HtmlTextWriter时,我得到一个空字符串,同时当我对网格视图进行快速查看时,它显示给我显示行。

我正在使用的代码,

代码语言:javascript
复制
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:

代码语言:javascript
复制
<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=“服务器”里,还是不走运。

EN

回答 1

Stack Overflow用户

发布于 2016-06-14 05:29:38

由于Visible="false"用于GridView,因此RenderControl的输出为空。您可以在呈现内容之前使其可见:

代码语言:javascript
复制
gvNoDataFound.Visible = true;
gvNoDataFound.RenderControl(htmlWrite);
gvNoDataFound.Visible = false;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37794899

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档