A1.SetData("Page_load");放在Page_Init中

解决方案 »

  1.   

    错了,应该放在Page_PreRender中
      

  2.   

    可以写得细一点吗?我还不知道怎么重载 Page 对象的方法呢,还有 Page_PreRender 有什么参数吗?
      

  3.   

    需要一载入控件就显示值这样写:
    -------------------------------------
    在a.ascx.cs中
    -------------------------------------
    string text = String.Empty;
    public string Text
    {
    get{return text;}
    set{text = value;}
    }protected override void Render(System.Web.UI.HtmlTextWriter writer)
    {
    if(Text != String.Empty)
    this.Label1.Text = text; base.Render (writer);
    }------------------------------
    在放置控件的页面的HTML代码中
    ------------------------------
    <uc1:a id="A1" runat="server" Text="Page_Load"></uc1:a></P>其余问题尚在考虑
      

  4.   

    ASPX              ASCX
                      ON_INIT
    ON_INIT
    PAGE_LOAD
                       PAGE_LOAD
      

  5.   

    SORRY,我把你的意思理解错了,你的这段代码根本没有错
      

  6.   

    Page_Load里负责控件的加载,使得控件剋亚响应单击事件,将控件绑定到数据源,而只有回送的时候,才能处理事件,单击按钮产生回送,执行按钮中的事件,同时page_load执行,遇到!IsPostBack跳过去,遇到PostBack执行
      

  7.   

    照 huangsuipeng(hsp-ec.net) 给的那个
    ASPX              ASCX
                      ON_INIT
    ON_INIT
    PAGE_LOAD
                       PAGE_LOAD
    ASPX 选发生 Page_Load  那么,我在 PageLoad 里的 
    private void Page_Load(object sender, System.EventArgs e)
    {
    // 在此处放置用户代码以初始化页面
    A1.SetData("Page_Load");
    }
    就应该把Label1 的值改为 "Page_load",事实不是这样
    ----------------------------------------------------------
    to   smoothwood(I try my best) 
    页面载入时候 ,Label1显示的确实就是 Label 而不是 "Page_load" 
      

  8.   

    TO:   smoothwood(I try my best) 
    能不能照着  keanu1978(黄金安魂曲) 的样子重写一个 Page_PreRender 看看,
      

  9.   

    TO:  bitsbird(一瓢.net) 谢谢你的解答,请你好好看看我的问题,我的控件里并没有什么事件
    ------------------------------------------------------------------------
    按 huangsuipeng(hsp-ec.net) 的说发  Page_Render 是什么时候执行呢 ?
      

  10.   

    wuc.ascx
    ___________________________________________
    <%@ Control Language="vb" AutoEventWireup="false" Codebehind="wuc.ascx.vb" Inherits="WebApplication6.wuc" TargetSchema="http://schemas.microsoft.com/intellisense/ie5" %>
    <asp:Label id="Label1" runat="server">label</asp:Label>
    _______________________________________________
    webForm.aspx
    ________________________________________________
        Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            tc1.setdata("page_load")
        End Sub    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            tc1.setdata("on_click")
        End Sub
    ————————————————————————————————————
    WEBFORM的HTML部分
    ————————————————————————————————————
    <%@ Register TagPrefix="TestControl" TagName="tc" src="wuc.ascx" %>
      

  11.   

    问题已经解决,果然如  smoothwood(I try my best)  第一帖所说 
    A1.SetData("Page_load");放在Page_Init中 就可以了
    override protected void OnInit(EventArgs e)
    {
    //
    // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
    //
    A1.SetData("Page_load");
    InitializeComponent();
    base.OnInit(e);
    }
    -------------------------------------------------------------------
    问题虽然解决了,但我仍然百思不得其解,A1.SetData("Page_load"); 这个语句无论放在
    base.OnInit(e);前或者 base.OnInit(e); 后效果都是一样的,为什么这个方法只能在
    overide  OnInit(EventArgs e) 这里的时候才有用呢?我明天结贴,
    不过我仍然希望能有真正的高手站出来说出个原因来。
      

  12.   

    新问题又出来了,把 A1.SetData("Page_load"); 放到 
    override protected void OnInit(EventArgs e){}
    中以后,在别的方法中调用 A1.SetData 就不管用了,也就是说在PostBack以后 OnInit 又重新运行了,这可怎么办呢?
      

  13.   

    cannot reproduce your problems:1. TestLabel.ascx:<script language="C#" runat="server">
    public void SetLabel(string s)
    {
      Label1.Text = s;
    }
    </script>
    <asp:Label id="Label1" runat="server" />2. TestLabel.aspx:<%@ Register TagName="ASCX" TagPrefix="my" src="TestLabel.ascx" %><form runat="server">
    <my:ASCX id="A1" runat="server" />
    <asp:Button id="btn" runat="server" Text="Set Value" OnClick="Button_Click"/>
    <asp:Button id="btn2" runat="server" Text="Refresh"/>
    </form><script language="C#" runat="server">
    void Page_Load(Object sender, EventArgs e)
    {
      if (!IsPostBack)
       A1.SetLabel("Page_Load");
    }void Button_Click(Object sender, EventArgs e)
    {
      A1.SetLabel("Button_Click");
    }
    </script>
      

  14.   

    http://album2.chinaren.com/alushare/file1/09/76/487609/55395.rar
    上面是我的两个文件 ,不信你们看看,思归的代码是网页代码在一起的,我用的是codebehind 方式,可就是不行?
      

  15.   

    还有就是  smoothwood(I try my best)  给的用 VB.NET 例子也是行的,为什么只有我的不行? 没天理了
      

  16.   

    是不是正验证了  
    http://www.dotnetjunkies.com/tutorial/3443CE54-E56C-476F-88A2-5F811A79880C.dcik
    所说的,
    “As we left off I mentioned that you could work with properties and methods exposed in user controls that are not precompiled, but you must use reflection. ”
      

  17.   

    你的代码看不到,不过我做了一个测试,一个用户控件中的Lable完全可以在Page_load中被修改的呀?是不是你的代码还有问题?
      

  18.   

    代码在 http://album2.chinaren.com/alushare/file1/09/76/487609/55395.rar
    我可以下载啊
      

  19.   

    TO  chinagy(会员GY)  可以把你的代码发给我吗? 我想看看 [email protected]
      

  20.   

    我看到了,
    protected gm.a A1=new gm.a();调用时,这句的错误 ,不应该再实例化了。
      

  21.   

    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {    
    this.Button1.Click += new System.EventHandler(this.Button1_Click);
    }
    #endregion

    另外发现你的窗体的load事件的勾子掉了。
      

  22.   

    我不知道原因为什么会是这样,我的
    private void InitializeComponent()
    {    
          this.Load+=new EventHandler(Page_Load); //这一句话没了
    }
    而且,我有一个正在做的网页,还有一个示例网页,这两个页中的 this.Load+=new EventHandler(Page_Load);  这一句都没了,所以才能将错误重现,我不知道是不是我无意间删掉了,不过,两个网页都是我删掉的可能性不是太大吧。我很郁闷。
    问题解决了,感谢各位老大的关注,
    我现在才感觉到贴出代码的重要性,不然让我说出来的话,是怎么也找不到原因的。谢谢。
    可用分不多了,大家见谅。