暂时坚持这个问题,现在终于将其缩小到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
答案 0 :(得分:0)
我最终做的是将搜索中的DataSet
放入会话变量中。然后将其用于用于发送到excel的虚拟数据网格。这样,如果需要,网站仍将按列排序,并且相同的数据仍然会传输到Excel。我觉得这在某种程度上是“黑客”,但不管我做了什么,我都无法让真正的datagrid
与AllowSorting
打开和关闭。
也许这会帮助遇到同样问题的其他人。我花了太多时间来寻找解决本来应该非常简单的事情。我找到了几个很好的解决方案,但它们似乎并不适用于我的情况。希望这可以帮助穿着类似鞋子的人花更少的时间来让它上班。
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()