禁用Datagrid为excel导出VB.net排序

时间:2016-03-15 21:38:42

标签: vb.net excel datagrid bindingsource datagridviewcolumn

暂时坚持这个问题,现在终于将其缩小到protected override void Render(System.Web.UI.HtmlTextWriter writer) { Response.AddHeader("content-disposition", "inline;filename=" + ReportName + ".xls"); Response.ContentType = "application/vnd.ms-excel"; //Response.BinaryWrite(pck.GetAsByteArray()); base.Render(writer); } AllowSorting的事实。当我尝试运行excel导出进行排序时,excel会打开一个没有任何网格线的空白文档。关闭它,数据按预期显示。我认为,如果我关闭excel导出按钮单击事件中的排序,然后再打开它,这将解决问题,但似乎并非如此。

我还尝试过关闭页面排序的地方,以确保我没有把它放在错误的位置,但似乎仍然没有改变空白页面的结果。

以下是我正在使用的编码。我确实读过一些关于使用True的讨论,但这似乎对我没有用。

我错过了一步还是做错了什么?

BindingSource

1 个答案:

答案 0 :(得分:0)

我最终做的是将搜索中的DataSet放入会话变量中。然后将其用于用于发送到excel的虚拟数据网格。这样,如果需要,网站仍将按列排序,并且相同的数据仍然会传输到Excel。我觉得这在某种程度上是“黑客”,但不管我做了什么,我都无法让真正的datagridAllowSorting打开和关闭。

也许这会帮助遇到同样问题的其他人。我花了太多时间来寻找解决本来应该非常简单的事情。我找到了几个很好的解决方案,但它们似乎并不适用于我的情况。希望这可以帮助穿着类似鞋子的人花更少的时间来让它上班。

Dim DummydgCustomers As New WebControls.DataGrid
            DummydgCustomers.DataSource = Session("dsCustomers").tables(0)
            DummydgCustomers.DataBind()

            HttpContext.Current.Response.ContentType = "application/vnd.ms-excel"
            HttpContext.Current.Response.AddHeader("content-disposition", "attachment;filename=" & "Facility Detail Report" & ".xls")
            HttpContext.Current.Response.Charset = ""

            EnableViewState = False

            Dim sw As New StringWriter()
            Dim hw As New HtmlTextWriter(sw)

            DummydgCustomers.RenderControl(hw)
            HttpContext.Current.Response.Write(sw.ToString())
            HttpContext.Current.Response.End()