我有一个在UpdatePanel中的GridView。它是继承自asp:GridView的,所以它有一个小的“导出我”图标,可以将它导出为XLS文件。它通过响应“导出”点击来工作。问题在于,如果你把这个智能GridView放在一个UpdatePanel中,ASP.NET会认为XLS文件应该写入面板中,这显然不是我们想要的。因此,每次都需要完全的后台处理。
我的所有更新面板都是通过编程生成的。
以下是在这种情况下不起作用的解决方案(其中许多在其他SO中已经涵盖):
1. 在ASP.NET 4之前的版本中,如果您在控件上留下ID,即使在UpdatePanel内部也会进行完全的后台处理。我的问题只针对最新和最伟大的.NET 4。
2. ScriptManager.RegisterPostBackControl看起来很有前途。它确实使控件后台处理使用正确的面板ID作为事件目标,但没有其他帮助。
3. 向UpdatePanel添加PostBackTrigger。我的更新面板是通过编程生成的,MS表示不支持这样做。我的测试表明他们是正确的:我试过了各种方式,但这不起作用。
4. 我不太喜欢聪明的GridView必须从自己身上挣脱出来的想法,但我试图在这些情况下让它在updatePanel外面放一个额外的控件。这个想法是在面板内部使客户端单击我的导出按钮,然后通过客户端JavaScript将其重定向到模拟面板外部的那个按钮上。然而,这不起作用,因为我似乎不能将“外部”控件添加到页面上——我得到了“The control collection cannot be modified during DataBind, Init, Load, PreRender or Unload phases.” 错误。
5. 使用jQuery将“导出”控件移动到面板外部。MS一定有一些他们认为是“在”面板中的控件的列表,而DOM中的物理位置并不重要。
有人有什么想法如何使它工作吗?我知道很多东西应该可以工作,但那不完全是同一件事。
我的所有更新面板都是通过编程生成的。
以下是在这种情况下不起作用的解决方案(其中许多在其他SO中已经涵盖):
1. 在ASP.NET 4之前的版本中,如果您在控件上留下ID,即使在UpdatePanel内部也会进行完全的后台处理。我的问题只针对最新和最伟大的.NET 4。
2. ScriptManager.RegisterPostBackControl看起来很有前途。它确实使控件后台处理使用正确的面板ID作为事件目标,但没有其他帮助。
3. 向UpdatePanel添加PostBackTrigger。我的更新面板是通过编程生成的,MS表示不支持这样做。我的测试表明他们是正确的:我试过了各种方式,但这不起作用。
4. 我不太喜欢聪明的GridView必须从自己身上挣脱出来的想法,但我试图在这些情况下让它在updatePanel外面放一个额外的控件。这个想法是在面板内部使客户端单击我的导出按钮,然后通过客户端JavaScript将其重定向到模拟面板外部的那个按钮上。然而,这不起作用,因为我似乎不能将“外部”控件添加到页面上——我得到了“The control collection cannot be modified during DataBind, Init, Load, PreRender or Unload phases.” 错误。
5. 使用jQuery将“导出”控件移动到面板外部。MS一定有一些他们认为是“在”面板中的控件的列表,而DOM中的物理位置并不重要。
有人有什么想法如何使它工作吗?我知道很多东西应该可以工作,但那不完全是同一件事。