1.動態加載用戶控件,並利用反射機制給控件賦值web
UserControl uc= (UserControl) LoadControl ("../myUserControl.ascx") ;
Type myusertype = uc.GetType();服務器
PropertyInfo info1 = myusertype.GetProperty("subID");ide
info1.SetValue(uc , subID , null);函數
2.利用反射調用控件中的方法,並傳值this
UserControl uc = (UserControl)PlaceHolder1.Controls[0];
Type userType = uc.GetType();
MethodInfo m = userType.GetMethod("submit");
object[] objParas = new object[1];
objParas[0] = subjectID;
m.Invoke(uc, objParas);spa
3.在用戶控件中觸發主頁面的事件(事件委託)orm
①首先,在一aspx頁面中包含一用戶控件(RaiseControl.ascx),該用戶控件內含有一服務器端控件。事件
②在該用戶控件的後臺代碼中聲明事件委託、定義事件成員並添加一事件監視函數。代碼以下:
//聲明事件委託
public delegate void PageChangeEventHandler(string psDeliver);
//定義事件
public event PageChangeEventHandler MyPageChange;
//監視事件
protected void OnPageChange(string psStr)
{
if (MyPageChange != null)
{
MyPageChange(psStr);
}
}
//在用戶控件的按鈕事件中,觸發已經定義的MyPageChange事件。
protected void btnRaise_Click(object sender, EventArgs e)
{
string _sStr = "你點擊了用戶控件中的按鈕!";
OnPageChange(_sStr);
}ci
③在其所在的頁面中編寫相應的處理函數並在頁面的Page_Load中將該處理函數綁定到用戶控件中定義的MyPageChange事件。
protected void Page_Load(object sender, EventArgs e)
{
//利用+=進行事件委託綁定
ctlRaiseControl.MyPageChange += this.DealwithReceived;
}
/**//// <summary>
/// 爲用戶控件中MyPageChange事件定義的處理函數
/// </summary>
/// <param name="psReceive"></param>
private void DealwithReceived(string psReceive)
{
lblReceive.Text = psReceive;
}string