我创建了一个用户控件 myControl.ascx在控件里我定义了一个方法来获取数据 public void getMyData(int id)然后我用如下的动态方法加入一个容器placeHolder里显示控件和内容。Control ctl =  new Control();
ctl = LoadControl("~/myControl.ascx");ctl.getMyData(101);   // 但我在此无法调用控件的方法?

placeHolder.Controls.Add(ctl); 请问我上面注解那行,如何才能调用这个控件的方法,获得填充这个控件的数据?谢谢!

解决方案 »

  1.   

    Control ctl =  new Control();因为ctl的类型Control,你需要将它转化成你的用户控件后台的类型((YourUserControlClassNameHere)ctl).getMyData(101);
      

  2.   

    saucer(思归) ( )
    --------
    正解。
      

  3.   

    使用强制转化也转为你用户控件对应的类
    myControl ctl = (myControl)LoadControl("~/myControl.ascx");ctl.getMyData(101); // 但我在此无法调用控件的方法?placeHolder.Controls.Add(ctl);
      

  4.   

    然后,根本不需要使用new,直接LoadControl
      

  5.   

    MyControl mc=(MyControl)Page.LoadControl("MyControl.ascx");
    PH.Controls.Add(mc);
    mc.GetMyData();
      

  6.   

    其实ASCX里的东西都可以拿出来用的
    有的时候可以用FINDCONTROL或者公开属性把东西拿出来处理
    Button bt=mc.GetButton(x);
     bt.Click+=new EventHandler(bt_Click);
      

  7.   

    load 完了强制转换为自定义控件类型
      

  8.   

    Control ctl =  ctl = LoadControl("~/myControl.ascx");((myControl的类名)ctl).getMyData(101);   // 但我在此无法调用控件的方法?

    placeHolder.Controls.Add(ctl);