构建ASP.net headered控件

时间:2010-02-14 19:08:17

标签: asp.net custom-controls

目前我正在开发一个广泛的表单,我想通过将输入字段分组到类似groupbox的面板中来组织。这些面板有一个标题,一个最小化和图钉图标。内部控件也应该能够对FormViews数据源执行双向绑定。

我找不到任何内置的asp.net控件来完成这项工作。完成此功能请求的最佳方法是什么?有任何可用的例子(找不到合适的例子)?

非常感谢!

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

Tuturials非常有趣,但目前并不需要模板控制,也没有数据控制。只有controlcollection中的控件应该能够这样做,但显然它们是默认的。

找到了多种方法来实现。一个用于扩展默认的Panel控件,另一个用于从WebControl扩展,如下所示。按预期工作。

[DefaultProperty("HeaderText")]
[ToolboxData(@"<{0}:FormGroupBox runat=""server"" HeaderText=""Title""></{0}:FormGroupBox>")]
[PersistChildren(true), ParseChildren(false, "Controls")]
public class FormGroupBox : WebControl
{
    [Bindable(true)]
    [Category("Appearance")]
    [DefaultValue("")]
    [Localizable(true)]
    public string HeaderText
    {
        get
        {
            String s = (String) ViewState["HeaderText"];
            return ((s == null) ? "[" + this.ID + "]" : s);
        }

        set
        {
            ViewState["HeaderText"] = value;
        }
    }

    protected override void RenderContents(HtmlTextWriter output)
    {
        output.Write(string.Format("<strong>{0}</strong>", this.HeaderText));
        output.Write(@"<hr />");

        base.RenderContents(output);
    }
}