如何在Ext.Net中设置属性的初始值

时间:2011-04-23 01:06:38

标签: asp.net ext.net

如何在Ext.Net(ext.net的.net包装器)中设置自定义(甚至非自定义)控件属性的初始值?

目前我正在做以下事情:

public class CpfField : Ext.Net.TextField {

    public CpfField() {
        this.SelectOnFocus = true;
        this.AllowBlank = false;
        this.MaxLength = 14;
        this.FieldLabel = "CPF";
        this.LabelAlign = Ext.Net.LabelAlign.Top;
        this.Plugins.Add(new CpfInputMask());
    }
}

正如您所看到的,我正在使用构造函数来设置默认值,我没有覆盖控件的任何行为。到现在为止还挺好。它按预期工作,但我在我继承的每个控件上都设置了this.LabelAlign = Ext.Net.LabelAlign.Top

这闻起来违反了DRY原则。有没有办法在全局范围内设置此(和其他属性)?

1 个答案:

答案 0 :(得分:0)

你在这里做的很好,虽然我注意到了一些问题。

  1. .LabelAlign属性必须设置为Container级别。 Container也必须使用FormLayout。不幸的是,.LabelAlign在Field级别不能以不同的方式呈现。
  2. 除非您预期所有这些“CpfField”组件都标记为“CPF”,否则不应该真正需要将.FieldLabel属性设置为“CPF”。 .FieldLabel通常在Field配置级别设置,在实例化字段时标记或代码隐藏。
  3. 您可以调查的另一个“全局”选项是使用.skin文件。下面的示例通过“全局”设置所有TextField组件的属性来演示此选项。

    以下示例演示了几个选项,包括在对象的OnInit事件中设置属性。

    示例(.skin)

    <%@ Register assembly="Ext.Net" namespace="Ext.Net" tagprefix="ext" %>
    
    <ext:TextField runat="server" Icon="Accept" />
    

    示例(.aspx)

    <%@ Page Language="C#" Theme="Skin1" %>
    
    <%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %>
    
    <script runat="server">
        protected void Page_Load(object sender, EventArgs e)
        {
            var form = new FormPanel
            {
                Height = 215,
                Width = 350,
                Title = "Example",
                Padding = 5,
                DefaultAnchor = "100%",
                Items = { 
                    new MyField 
                    {
                        FieldLabel = "My Field"
                    },
                    new AnotherField 
                    {
                        FieldLabel = "Another Field"
                    },
                    new TextField 
                    {
                        FieldLabel = "A TextField"
                    }
                }
            };
    
            this.Form.Controls.Add(form);
        }
    
        public class MyField : TextField
        {
            public MyField()
            {
                this.SelectOnFocus = true;
                this.AllowBlank = false;
                this.MaxLength = 14;
            }
        }
    
        public class AnotherField : TextField
        {
            protected override void OnInit(EventArgs e)
            {
                this.SelectOnFocus = true;
                this.AllowBlank = false;
                this.MaxLength = 14;
    
                base.OnInit(e);
            }
        }
    </script>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title>Ext.NET Example</title>
    </head>
    <body>
        <form runat="server">
            <ext:ResourceManager runat="server" />
        </form>
    </body>
    </html>
    

    希望这有帮助。