ASP.NET 2.0 中可折叠 EditorPart 的 EditorZone





4.00/5 (4投票s)
演示如何开发一个自定义的 EditorZone,允许它包含的 EditorPart 折叠以节省屏幕空间。
引言
又一篇短小的文章。我使用新的 WebPart 框架已经有一段时间了,我已经开发了一些可能让您感兴趣的 WebPart。这次,我将描述如何创建一个能够折叠其包含的EditorPart
的EditorZone
,使用许多应用程序中使用的加号和减号图标。
通常,当您有一个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
。为了好玩,我还创建了两个开关,您可以使用它们来控制行为和样式。行为是Collapse
或NoCollapse
。这表示您是否要显示折叠图标。对于样式,您可以从CollapseNone
或CollapseAll
中选择,这表示当您将EditorPart
恢复到全尺寸时要对其他EditorPart
执行的操作。
历史
- 2005年10月1日 - 初始版本。