【问题标题】:Is there an event called after a gridview is completely finished?网格视图完全完成后是否有调用事件?
【发布时间】:2014-01-09 15:43:25
【问题描述】:

或者一种检测它的方法是完成渲染?

其实差不多就是这个问题

Gridview, is there an event, how would I determine that it has finished being rendered?

但他没有具体说明他是如何检测到所有内容都已绘制/调整大小的。

编辑:(从下面添加我的评论以指定我要做什么)

我正在尝试通过基本上动态地在其中实际包含数据的网格视图之上添加另一个网格视图来为网格视图的静态标题创建一个解决方法。在尝试了大约 12 种不同的建议/解决方案但没有真正的运气之后,我求助于这个。我所拥有的效果很好,只是在包含数据的标题完成重新调整大小之前渲染了新标题,我意识到我正在尝试的内容可能甚至不起作用,因为它可能需要另一个回发来重新渲染新标题在我找到列标题的大小后,但我认为我可以通过更新面板解决这个问题。

我意识到这可能不是最优雅的解决方案,但老实说,还没有找到任何解决这个问题的方法,甚至可以接近优雅,甚至可以在当前浏览器上正常工作。

【问题讨论】:

  • 该问题的发帖者指出:我通过在绘制控件后调用的页面加载注册一个函数来解决问题
  • 对了,他是怎么检测到控件被绘制的?
  • 通过在页面加载中注册一个函数,这意味着要么使用client.registerscriptblock,要么使用纯客户端javascript/jquery。

标签: c# asp.net .net gridview


【解决方案1】:

它在客户端呈现,因此服务器不知道那里发生了什么。

您可能正在寻找DataBound 事件。

否则,在客户端,您可以确定页面何时完成加载(jquery 就绪函数),然后回调到服务器。但我无法想象你能做些什么有用的事情。如果您向客户端发送更多数据并再次呈现,您可能会出现无限循环。

【讨论】:

  • DataBound 在绘制和调整大小之前调用。所以基本上为时过早。我正在尝试检测一些自动调整大小的列的宽度。
【解决方案2】:

ASP.Net 网页中的所有内容在生命周期的同一阶段连续呈现相同的内容(请参阅http://msdn.microsoft.com/en-us/library/ms178472.aspx),因此 Gridview 将在Gridview_PreRenderCompleteGridview_Unload 之间呈现。

您的页面PreRender 将触发,然后控件PreRender,然后页面将调用Gridview Render 方法(没有事件)然后控件Unload 将触发,然后页面Unload会开火。

这个问题的其他发帖者指的是客户端渲染,而我指的是服务器端渲染过程。你真正追求的是哪一个,为什么?

【讨论】:

  • 尝试检测由数据源动态生成的列的宽度,并在表加载时重新调整大小。一旦完成加载,它们就很好而且是静态的。
  • 尺寸在服务器端不可用,除非您使用 CSS 样式或类似样式明确设置它们。这意味着如果您想计算出它们的大小,您需要使用 Javascript 在客户端上检测到这一点。
  • 我正在尝试通过基本上动态地在其中实际包含数据的网格视图之上添加另一个网格视图来为网格视图的静态标题创建一个解决方法。在尝试了大约 12 种不同的建议/解决方案但没有真正的运气之后,我求助于这个。我所拥有的效果很好,只是在包含数据的标题完成调整大小之前呈现了新标题,我意识到我正在尝试的内容可能甚至不起作用,因为它可能需要另一个回发来在我找到新标题后重新呈现新标题列标题的大小,但我想我可以通过更新面板解决这个问题。
  • 好的,有几种方法可以做你想做的事,但首先我想知道为什么?这可能会帮助我找出最好的方法。为什么 Asp.Net Gridview 提供的解决方案不符合您的要求?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多