2014-11-14 106 views
0

我有一個用戶控制其是圖像按鈕。 我希望控件在我的網頁中動態添加「n」次。 「 」n「來自數據庫。在 「ASPX」 : 我想這個代碼使用用戶控制動態控制(可以是字面控制)在C#asp.net

<%@ Register TagPrefix="uc" TagName="imgbtn"   Src="~/components/seatfromdb/usercontrol/UC_imgbutton.ascx" %> 
......................................... 
    //some code goes here 
....................................... 
    <uc:imgbtn ID="uc_imgbtn" 
       runat="server" 
       /> 

在 「CS」:

for(int i=0;i<5;i++) 
{ 
    UserControl uc = new UserControl(); 
       uc = uc_imgbtn; 
       //uc.Attributes.Keys = "~/images/buttonorange.png"; 
       //uc.ID = "uc" + i.ToString(); 
       //uc.Height = 30; 
       plhdr_seat.Controls.Add(uc); 
       plhdr_seat.Controls.Add(new LiteralControl("<br />")); 
} 

但控制 「UC」 添加到頁面上只有一次。爲什麼? 請幫我用這段代碼。

+0

什麼是C#中的'uc_imgbtn'? – artm

+0

我編輯了我的問題。請看看它 –

+0

@artm Id的ImageBtn,用戶控件 – CodingDefined

回答

0

不要創建UserControl,調用Page.LoadControl方法來獲得一個新的實例UC_imgbutton

for(int i = 0; i < 5; i++) 
{ 
    UC_imgbutton uc = (UC_imgbutton)LoadControl("~/components/seatfromdb/usercontrol/UC_imgbutton.ascx"); 
    //uc.Attributes.Keys = "~/images/buttonorange.png"; 
    //uc.ID = "uc" + i.ToString(); 
    //uc.Height = 30; 
    plhdr_seat.Controls.Add(uc); 
    plhdr_seat.Controls.Add(new LiteralControl("<br />")); 
} 
+0

LoadControl未突出顯示。缺少參考。我有System.Web.UI。但仍有一些缺失。 –

+0

他們一定是從谷歌禁止你 - http://msdn.microsoft.com/en-us/library/system.web.ui.page.loadcontrol(v=vs.110).aspx – Igor

0

這是因爲你總是分配uc_imgbtnnew UserControl();。換句話說,您總是將相同的現有控件分配給plhdr_seat.Controls集合。

檢查注意this link瞭解更多詳情:

A控制只能在 時間被分配到一個Control.ControlCollection。如果該控件已經是另一個控件的子控件,則在將該控件添加到另一個控件之前,該控件已從該控件中刪除了 。

如果你想每次添加一個新的uc_imgbtn控制到plhdr_seat.Controls收集你需要改變你的代碼:

UserControl uc = new UserControl(); // change this 
uc = uc_imgbtn; // remove this 

在第一行,你必須確保一定要正確初始化uc控制。據我的代碼看,這應該工作:imgbtn uc = new imgbtn();

+0

imgbtn uc = new imgbtn();不工作。 imgbtn是標記名稱 –