继承某控件,我想在初始化的时候,加入.某属性=值加在New里面,关闭页面再打开,就绑定了该值了造成了该属性无法修改
我只是想在第一次加载的时候初始化一次就Ok了

解决方案 »

  1.   

    初始化控件--->初始化控件页面--->页面加载--->控件加载
      

  2.   

    Page_load if not Page.isPostBack then
    dim a as label
    end
      

  3.   

    http://www.cnblogs.com/NoRax/archive/2007/02/28/660263.html
    这个你看看,初始化控件有相应的事件的Control_Init()
      

  4.   

    是我没有说清楚,初始化是在自定义控件中(设计期)1、自定义控件一个,继承Textbox
    2、属性CssClass——想设置一个默认值但是无论是new 还是init都会造成,关闭引用的页面后,再次打开就还原成默认值了
    也就是说不让修改了,呵呵~~
      

  5.   

    也应该说实现了和
    <asp:Button ID="Button1" runat="server" Text="Button" />这里的Text属性类似的功能,拖出来的时候就有Text内容,但是你可以修改它
      

  6.   

    // WelcomeLabel.cs
    using System;
    using System.ComponentModel;
    using System.Security.Permissions;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;namespace Samples.AspNet.CS.Controls
    {
        [
        AspNetHostingPermission(SecurityAction.Demand,
            Level = AspNetHostingPermissionLevel.Minimal),
        AspNetHostingPermission(SecurityAction.InheritanceDemand, 
            Level=AspNetHostingPermissionLevel.Minimal),
        DefaultProperty("Text"),
        ToolboxData("<{0}:WelcomeLabel runat=\"server\"> </{0}:WelcomeLabel>")
        ]
        public class WelcomeLabel : WebControl
        {
            [
            Bindable(true),
            Category("Appearance"),
            DefaultValue(""),
            Description("The welcome message text."),
            Localizable(true)
            ]
            public virtual string Text
            {
                get
                {
                    string s = (string)ViewState["Text"];
                    return (s == null) ? String.Empty : s;
                }
                set
                {
                    ViewState["Text"] = value;
                }
            }        protected override void RenderContents(HtmlTextWriter writer)
            {
                writer.WriteEncodedText(Text);
                if (Context != null)
                {
                    string s = Context.User.Identity.Name;
                    if (s != null && s != String.Empty)
                    {
                        string[] split = s.Split('\\');
                        int n = split.Length - 1;
                        if (split[n] != String.Empty)
                        {
                            writer.Write(", ");
                            writer.Write(split[n]);
                        }
                    }
                }
                writer.Write("!");
            }
        }
    }
    参考一下MSDN Library:ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_aspnetctrlauth/html/6d90782a-a1a4-45a6-b2d4-cf6362b83b08.htm
      

  7.   

    楼上的兄弟——Text属性已经存在了的,我要的是初始化的效果,要把它设置出一个默认值来的。
      

  8.   

    using System;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.ComponentModel;namespace LcWebControlLibrary
    {
    /// <summary>
    /// WebCustomControl1 の概要の説明です。
    /// </summary>
    [DefaultProperty(""), 
    ToolboxData("<{0}:WebCustomControl1 runat=server></{0}:WebCustomControl1>")]
    public class WebCustomControl1 : System.Web.UI.WebControls.TextBox
    { /// <summary> 
    /// このコントロールをパラメータに指定された出力に書き出します。
    /// </summary>
    /// <param name="output"> 書き出す HTML ライタ </param>
    protected override void Render(HtmlTextWriter output)
    {
    this.Text="aaaaa";
    this.CssClass="bbbbb";
    base.Render(output);
    }
    }
    }
      

  9.   

    呵呵,这个问题我前几天刚遇到过,最后终于解决。
    你之所以造成text的值永远是你设置的默认值是因为你在服务器端设置了text的值,而客户修改后结果返回服务
    器端后又会使有你原来设置的默认值给覆盖。
    我的解决办法是:
        你在为控件初始化的时候不要写成:Textbox.text="默认值";
                         而应该写为:textbox.Attributes.Add("Value", "默认值");
                             就是说给控件加客户端的默认值。这样就可以修改了。
       希望我没有理解错你的意思。
      

  10.   


    如在上面定义时,这里
    public virtual string Text
            {
                get
                {
                    string s = (string)ViewState["Text"];
                    return (s == null) ? String.Empty : s;            }//改为,return (s == null) ? 默认值: s;不行吗?
                set
                {
                    ViewState["Text"] = value;
                }
            }
      

  11.   

    Insus.NET给Textbox初始化值,都是直接在Textbox中给的:<asp:TextBox ID="txtTimeLimit" runat="server" Text="1" CssClass="textbox"></asp:TextBox>
      

  12.   

    嗯,关键是Insus.NET如何做到的,应该就是类似的东西的
      

  13.   

    从写着三个事件:
    1.OnInit(EventArgs e)
    {
    page.RegisterRequiresControlState(this);//通知叶面保存控件的状态
    base.OnInit(e);
    }
    2.object SaveControlState()
    {
    return this.text;//通知要保存的属性
    }
    3. LoadControlState(object savedState)
    {
    this.text=savedState as String;//给属性付值}
    这三个事件 写完就和asp.net自己的控件是一样的了