【问题标题】:GridView RenderControl Not working?GridView RenderControl 不工作?
【发布时间】:2016-10-14 04:13:13
【问题描述】:

我正在尝试将一个简单的 gridview 导出到 excel,当我尝试将 gridview 控件呈现到 HtmlTextWriter 时,我得到一个空字符串,同时当我对 gridview 进行快速观察时,它显示行存在。

我正在使用的代码,

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="server" ,仍然没有运气

【问题讨论】:

    标签: c# asp.net excel gridview


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多