【问题标题】:How to remove a Gridview from an ASPX page?如何从 ASPX 页面中删除 Gridview?
【发布时间】:2015-10-09 04:17:37
【问题描述】:

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

【问题讨论】:

  • 您可以发布您的问题的页面代码吗?
  • 使用的代码见上文
  • @CodingNovice 只需使用display:none 让gridview 消失,但它可以在download 按钮中使用
  • @Webruster 你能用那个命令吗?我一直认为如果它是服务器端,它需要是 Visible="False" ?
  • 是的,当您使用Visible=false 时,它实际上会删除HTML,因为display=none 不会删除html,但可以在Inspect element 下看到,这样您可以访问gridview进行下载

标签: asp.net gridview export-to-csv


【解决方案1】:

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

【讨论】:

  • 您提供给这个问题的答案有效,网格现在被隐藏了。但是,我现在决定不希望它处理隐藏的 gridview 中的结果,因为(尽管它不可​​见)当 gridview 中的数据集很大时,它仍然会导致页面挂起。无论如何要评论gridview并只允许用户使用“下载到CSV”按钮?
  • 通常您使用gridview 导出excel,现在在您的情况下,您需要更改导出到excel 的方法。您将如何导出列? .. 我用 32 列大约 10,000 行 .. 它从来没有卡住 .. 使用数据库查询检查数据是如何检索的
  • 感谢您的及时回复。它是通过对数据库的 1 次调用来检索的,该数据库通过 ID 和名称查询表中的记录。该表有 12 列和 15,000 行。在 gridview 中显示时,它将在 2,000 行后挂起。我希望它只允许用户从下载按钮中下载 CSV,而不是在页面上(在 CMS 中)使用它检索到的所有记录填充 Gridview。
  • 肯定会给出解决方案,请将其作为新问题开始,添加问题时请包括现有的按钮单击事件,您将如何导出到 Excel。我会修改它并提供解决方案
  • 我创建了一个新问题 - stackoverflow.com/questions/33051129/…
【解决方案2】:

您可以从 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 in 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
}

【讨论】:

    猜你喜欢
    • 2011-08-31
    • 1970-01-01
    • 2013-06-24
    • 1970-01-01
    • 2013-04-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多