如何从 ASPX 页面中删除 Gridview?

How to remove a Gridview from an ASPX page?

我有一个显示 GridView 的 Aspx 页面。 gridview 将显示数据,这些数据取决于从下拉菜单中选择的类别。用户可以选择将其下载为 CSV 文件(导出为 CSV)。我现在不希望 Gridview 出现(因为它太大以至于经常挂起)而是能够从 gridview 下载包含数据的 CSV 文件。我已经成功构建了允许通过单击按钮下载此数据的按钮。但是,我现在无法在没有出现 gridView 的情况下打开页面。我试图注释掉 Gridview 代码 - 这只是破坏了页面。我试图将 gridview 设置为 Visible="False" 但这也不起作用。我还能做些什么来防止 gridview 出现以及用户被直接带到下载对话框?

您可以从 Code Behind 将数据加载到 DataSet 或 DataTable 中,然后将其直接导出到 Excel/CSV 而无需将其分配给 GridView,例如在以下示例中将其导出到 Excel:

Public Sub ExportToExcel(dt As DataTable)
    If dt.Rows.Count > 0 Then
        Dim tw As New System.IO.StringWriter()
        Dim hw As New System.Web.UI.HtmlTextWriter(tw)
        Dim dgGrid As New DataGrid()
        dgGrid.DataSource = dt
        dgGrid.DataBind()
        'Get the HTML for the control.
        dgGrid.RenderControl(hw)
        'Write the HTML back to the browser.
        Response.ContentType = "application/vnd.ms-excel"
        Response.AppendHeader("Content-Disposition", "attachment; filename=Data.xls")
        Me.EnableViewState = False
        Response.Write(tw.ToString())
        Response.[End]()
    End If
End Sub

如果您遇到类似 control must be placed inside of form tag 的错误,您可能还需要将以下代码放入后端(参考:export-data-to-excel-from-datatable-gridview-aspnet-csharp

Public Sub VerifyRenderingInServerForm(control As Control)
    ' Verifies that the control is rendered
End Sub

以上代码的C#版本:

public void ExportToExcel(DataTable dt)
{
    if (dt.Rows.Count > 0) {
        System.IO.StringWriter tw = new System.IO.StringWriter();
        System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(tw);
        DataGrid dgGrid = new DataGrid();
        dgGrid.DataSource = dt;
        dgGrid.DataBind();
        //Get the HTML for the control.
        dgGrid.RenderControl(hw);
        //Write the HTML back to the browser.
        Response.ContentType = "application/vnd.ms-excel";
        Response.AppendHeader("Content-Disposition", "attachment; filename=Data.xls");
        this.EnableViewState = false;
        Response.Write(tw.ToString());
        Response.End();
    }
}

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

将您的 Gridview 包装成 div 并在 asp.net 代码中将其设置为 display:none
例如:<div id="divhidegrid" runat="server" style="display:none;" > <asp:GridView ID="gvtest" runat="server" > </div> 像这样