【发布时间】:2012-07-03 16:11:06
【问题描述】:
我正在处理具有按特定布局排列的用户控件的页面。我正在修改该页面以支持根据用户的偏好重新排序位置。因此,从本质上讲,在加载时,我知道我需要将不同的用户控件放置在何处。
我可以想到两种方法:
- 在客户端进行重新排序。这对用户来说并不理想 当他们看到重新排序发生时。
- 在服务器端进行重新排序。这需要我做很多 重写以根据偏好动态加载用户控件。
还有其他方法可以完成我想做的事情吗?
【问题讨论】:
-
这些控件的数据源是什么?我想如果它继承自 IEnumerable(实体框架,Linq -to SQL,甚至是普通的旧 List),您可以简单地更改 OrderBy 并重新绑定您的数据源,假设您的布局是在中继器或其他类似控件中完成的.
-
它们是用户控件(ascx)。
-
既然 Page.Controls 或 WhatContainerObject.Controls 对象是 IEnumerable,我们可以在那里订购吗?类似 Page.Controls.Cast
().ToList();然后清除现有控件并使用上述语句执行 OrderBy 或类似的操作。 -
这是一个有趣的想法。我需要根据顺序将用户控件放在 3 个不同的列中。我应该覆盖页面生命周期中的什么方法?
-
我不是 100% 确定。如果它只是页面控件并且没有回发,它可能会在 Init 中工作...取决于您的用户控件是否需要视图状态、会话等。您将无法访问 PreInit 中的那些东西,但我总是喜欢越早越好。我认为控制绘制的顺序最终在 PreRender 或 Render 中确定,所以我会在此之前尝试。我认为在这一点上这是一种实验性的:)
标签: c# jquery asp.net webforms