【问题标题】:How do I export a Gridview Control to Excel in DotNetNuke?如何在 DotNetNuke 中将 Gridview 控件导出到 Excel?
【发布时间】:2013-09-12 14:23:55
【问题描述】:

是否有替代方法,因为使用 <form runat="server"> 会导致 500 错误。

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

已编辑

在@HansDerks 的帮助下,我最终使用了以下解决方案(所提供的解决方案的一个令人兴奋的版本。):

protected void Export_Click(object sender, System.EventArgs e)
    {
        StringWriter writer = new StringWriter();
        HtmlTextWriter htmlWriter = new HtmlTextWriter(writer);
        GridView gridView = new GridView();
        gridView.DataSource = MySqlDataSource;
        gridView.AutoGenerateColumns = true;
        gridView.DataBind();
        gridView.HeaderRow.Style.Add("background-color", "#003c74");
        gridView.HeaderRow.Style.Add("color", "#ffffff");
        for (int i = 0; i < gridView.Rows.Count; i++)
        {
            GridViewRow row = gridView.Rows[i];

            //Change Color back to white
            row.BackColor = System.Drawing.Color.White;

            //Apply text style to each Row
            row.Attributes.Add("class", "textmode");

            //Apply style to Individual Cells of Alternating Row
            if (i % 2 != 0)
            {
                row.BackColor = System.Drawing.Color.AliceBlue;
            }
        }
        gridView.RenderControl(htmlWriter);
        htmlWriter.Close();

        Response.Clear();
        Response.AddHeader("content-disposition", "attachment;filename=filename.xls");
        Response.Charset = "";
        Response.Write(writer.ToString());
        Response.End();
    }

我希望你们会发现它有用。谢谢大家!

【问题讨论】:

  • 除了使用“what”还有其他选择吗?
  • @ChrisHammond public override void VerifyRenderingInServerForm(Control control) 我目前正在研究使用 Telerik 控件。我遇到了麻烦,因为没有 QuickStart.dll 就无法编译
  • @ChrisHammond 没有 Telerik 还有其他方法吗?我不能在我的自定义模块中使用VerifyRenderingInServerForm,因为它依赖于&lt;form runat="server"&gt; 标签的使用。目前我正在研究一个telerik选项。如果有其他方法请告诉我?如果您有一个示例模块供我参考,请也告诉我。我正在使用 DNN 6.2.5

标签: c# asp.net dotnetnuke dotnetnuke-6


【解决方案1】:

如果你有数据源,你可以试试这个(用相关数据源替换数据表)

private void DataTableToExcel(DataTable dataTable)
{
    StringWriter writer = new StringWriter();
    HtmlTextWriter htmlWriter = new HtmlTextWriter(writer);
    GridView gridView = new GridView();
    gridView.DataSource = dataTable;
    gridView.AutoGenerateColumns = true;
    gridView.DataBind();
    gridView.RenderControl(htmlWriter);
    htmlWriter.Close();

    Response.Clear();
    Response.AddHeader("content-disposition", "attachment;filename=FileName.xls");
    Response.Charset = "";
    Response.Write(writer.ToString());
    Response.End();
}

【讨论】:

  • 工作得很好...我把它弄得有点兴奋,但我不确定我是否正确地遵循了我的操作顺序,我将把我的最终草稿放在我原来的帖子中 已编辑
【解决方案2】:

如果您使用基于 Telerik 控件的 DNN 网格控件,您可以使用以下命令导出网格的可见内容:

protected void OnExportCSVClick(Object sender, EventArgs e)
{
    grdMemberTypes.MasterTableView.ExportToCSV();
}

这适用于 DNN 7.0。

很遗憾,如果您打开了分页,它只会输出可见行中的数据。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-25
  • 1970-01-01
  • 2014-12-20
相关资源
最近更新 更多