1

我正在尝试创建一个扩展 ASP.net 面板的自定义服务器控件“CollapsablePanel”。本质上,我要做的是采用当前面板,添加标题栏和任何必要的 javascript 以添加折叠/展开功能。除此之外,我希望 .aspx 语法和常规面板功能保持不变。对于这种情况是否有某种最佳实践,或者我最终是否必须完全覆盖 Panel 的 HTML 输出的呈现方式?

谢谢,

麦克风

4

3 回答 3

3

在我看来,您只想派生一个新的 Panel 类,然后覆盖 Render 功能:

public class MyPanel : Panel
{    
    protected override void Render(HtmlTextWriter writer)    
    {
        writer.Write("<div id=\"" + base.ClientID + "\">");
        writer.Write("..."); // Whatever else you want to render.
        writer.Write("</div>");
    }
}
于 2009-10-14T20:29:04.990 回答
2

Asp.Net AJAX Control Toolkit 包含一个听起来可能适合您需要的类:CollapsiblePanel.

如果这不起作用,您可能会考虑从继承CompositeControl而不是直接继承,Panel因为听起来您希望您的控件至少包含 a Label、 anImage和 a 。Panel

继承自的一个优点CompositeControl是,即使您必须自己实现一些呈现逻辑,您也可以将大部分实际的 HTML 呈现委托给子控件。一些有用的链接:

于 2009-10-14T20:26:47.540 回答
0

除了基本概念之外,您没有详细说明要如何扩展,但您需要做的只是制作自己的,从作为基类的 Panel 派生。

class MyPanel : Panel
{
    public MyPanel()
    {
    }

    etc...
}
于 2009-10-14T20:05:16.490 回答