【轉載】asp.net動態載入ascx使用者控制元件

iDotNetSpace發表於2010-05-20

在主aspx/ascx檔案中,將目標ascx1,ascx2控制元件拖拉到其頁面中,然後刪除,目的是要生成:Register 程式碼,然後在主檔案中定義DIV或Td之類的,設定ID ,runat="server",接下來LoadControl("ascx1")








----------------

後臺程式碼

//是否登入
if (Session["VIPUSERNAME"] == null)
{
//沒有登入
Control uc = LoadControl("loginState1.ascx");
}
else
{}

logState.Controls.Clear();
logState.Controls.Add(uc);
----------------------

網上其它文章:

~動態加ascx~
// .aspx
例如:定義一個


// .aspx.cs
Control uc = Page.LoadControl( "你的.ascx路徑 ");
test.Controls.Add(uc);
這時就可以顯示控制元件uc的內容.其中要呼叫的控制元件要註冊到本頁面
《詳細》
private CreateContorlUI SingleUIControl;//宣告使用者控制元件

private void ControlAdd()
{
SingleUIControl = (CreateContorlUI)Page.LoadControl( "CreateSingleUI.ascx ");//載入使用者控制元件,這裡使用者控制元件和頁面在同一個目錄
SingleUIControl.ID = "SingelUI ";//設定使用者控制元件ID

this.PlaceHolderSingle.Controls.Add(SingleUIControl);//新增使用者控制元件到頁面
}

--------------

步驟一: 把ascx控制元件拖入設計視窗,然後轉入html模式,保留定義
如果你需要多個ascx的話,請全部拖入。
但是把相應的內容刪除。(因為我們需要動態載入)
在需要填入控制元件的地方,放個容器,比如td,並設定在伺服器端執行



2:動態呼叫
UserControl myusercontrol = (UserControl) LoadControl ("../includes/pageNavigater.ascx") ;
Type myusertype = myusercontrol.GetType();
//下面是給ascx賦值
PropertyInfo myuserinfo1 = myusertype.GetProperty("RelatedDatagrid");//) .GetProperty("RelatedDatagrid");
myuserinfo1.SetValue(myusercontrol,gridhwcy ,null);


PropertyInfo mypassinfo = myusertype.GetProperty("torefresh");
mypassinfo.SetValue(myusercontrol,true,null );

PropertyInfo myuserdatasource = myusertype.GetProperty("RelatedDataSource");
myuserdatasource.SetValue(myusercontrol,dv,null);

tdpan.Controls.Clear();
tdpan.Controls.Add(myusercontrol);

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-663221/,如需轉載,請註明出處,否則將追究法律責任。

相關文章