65.9K
CodeProject 正在变化。 阅读更多。
Home

ASP.NET 2.0 中可折叠 EditorPart 的 EditorZone

starIconstarIconstarIconstarIconemptyStarIcon

4.00/5 (4投票s)

2005年10月3日

CPOL

3分钟阅读

viewsIcon

48182

downloadIcon

717

演示如何开发一个自定义的 EditorZone,允许它包含的 EditorPart 折叠以节省屏幕空间。

Sample Image - CollapsingEditorZone.gif

引言

又一篇短小的文章。我使用新的 WebPart 框架已经有一段时间了,我已经开发了一些可能让您感兴趣的 WebPart。这次,我将描述如何创建一个能够折叠其包含的EditorPartEditorZone,使用许多应用程序中使用的加号和减号图标。

通常,当您有一个EditorZone并且它包含一些EditorPart时,当您将显示模式设置为WebPartManager.EditDisplayMode时,所有EditorPart都将显示。您可能会将您的 EditorZone 停靠在屏幕侧边的一个狭窄的垂直栏中,这与 Microsoft SharePoint 非常相似。因此,EditorZone中包含的EditorPart将以列的形式一个接一个地呈现。此设置的一个问题是单个EditorPart的高度可能会非常大;BehaviorEditorPart就是一个很好的例子。它占据了我屏幕高度的大约 60%,因此当我想要与它一起显示其他EditorPart时,我必须向下滚动。如果您检查 SharePoint 等产品,您会注意到EditorPart是可以折叠的,从而节省宝贵的屏幕空间。事实证明,ASP.NET 可以很容易地扩展以提供相同的外观和感觉。

代码本身并不难写;覆盖EditorZone的默认渲染行为非常容易。它不自己渲染EditorPart,而是将此责任委托给EditorPartChrome类的实例。通过覆盖此实例的创建,可以轻松地自定义渲染。两个类执行大部分工作负载。一个从EditorZone派生的类,名为CollapsibleEditorZone。此类执行两项任务,创建一个自定义的EditorPartChrome实例并响应来自展开/折叠图标的回发事件。通过设置其ChromeState来最小化和还原EditorPart。第二个类派生自EditorPartChrome并渲染EditorPart。添加图标是一项简单的任务,只需使用HtmlTextWriter进行一些渲染即可。代码与基类中的代码基本相同。

然后是一些关于代码的有趣之处。它使用两个嵌入式资源作为图标。这些资源使用WebResource.axd HTTP 处理程序提供服务。这可以使用assemblyInfo.cs文件中的WebResourceAttribute和对ClientScriptManager的调用轻松完成,以将图标的src属性绑定到处理程序。图标有一个客户端处理程序用于单击事件,该事件将页面回发到CollapsibleEditorZone,后者负责最小化和还原EditorPart。为了好玩,我还创建了两个开关,您可以使用它们来控制行为和样式。行为是CollapseNoCollapse。这表示您是否要显示折叠图标。对于样式,您可以从CollapseNoneCollapseAll中选择,这表示当您将EditorPart恢复到全尺寸时要对其他EditorPart执行的操作。

历史

  • 2005年10月1日 - 初始版本。
© . All rights reserved.