C# aspx页面动态加载ascx用户控件 及 利用反射调用其内方法
//控件代码
public partial class WebUserControl : System.Web.UI.UserControl
{
public void TestMethod(string strID)
{
this.TextBox1.Text += " WebUserControl:" + strID;
//其他相关操作
}
}
//控件代码
public partial class WebUserControl2 : System.Web.UI.UserControl
{
public void TestMethod(string strID)
{
this.TextBox1.Text += " WebUserControl2:" + strID;
//根据传入参数进行其他相关操作
}
}
//页面代码
public partial class Default1 : System.Web.UI.Page
{
bool isShow = true;//是
string strWebUserControls = "WebUserControl,WebUserControl2";
protected void Page_Load(object sender, EventArgs e)
{
if (isShow)
{
string[] strUCs = strWebUserControls.Split(",".ToCharArray()[0]);
for (int i = 0; i < strUCs.Length; i++)
{
string strUCName = strUCs[i].ToString();
Control a = Page.LoadControl(strUCName+".ascx");
a.ID = strUCName;
this.Panel1.Controls.Add(a);
}
}
}
//页面按钮操作
protected void Button1_Click(object sender, EventArgs e)
{
if (isShow)
{
string[] strUCs = strWebUserControls.Split(",".ToCharArray()[0]);
for (int i = 0; i < strUCs.Length; i++)
{
string strUCName = strUCs[i].ToString();
Type tc = this.Panel1.FindControl(strUCName).GetType();
Control uc = this.Panel1.FindControl(strUCName);
////object o = System.Activator.CreateInstance(uc.GetType());
System.Reflection.MethodInfo m = tc.GetMethod("TestMethod");
object[] objParas = new object[1];
objParas[0] = "1";
m.Invoke(uc, objParas);
////m.Invoke(a, null);
}
}
}
}
posted on 2008-09-25 12:27 freeliver54 阅读(9062) 评论(4) 编辑 收藏 举报