2012-10-04 23 views
0

我創建一個按鈕,將它添加到面板有毛病我的ASP按鈕,同時將其添加到面板.. ASP和C#

 Panel p = new Panel(); 
     p.ID = "b_con"; 
     p.Attributes.Add("runat", "server"); 
     this.Controls.Add(p); 
     Button b = new Button(); 
     b.Attributes.Add("value", "reply"); 
     b.Attributes.Add("id", Convert.ToInt32(r["Message_ID"]).ToString()); 
     b.Attributes.Add("class", "button"); 
     b.Click += new System.EventHandler(button_Click); 
     p.Controls.Add(b); 

我得到這個錯誤類型的 控制「ctl01」 'Button'必須放置在runat = server的表單標籤中。

+0

面板是服務器控件。你不需要添加'runat =「server」'。一個Button有一個「Id」和一個「Text」屬性。 –

+1

在什麼時候將面板添加到頁面? –

+0

你的問題解決了嗎? –

回答

3

您要添加它的頁面需要它。你的面板必須存在於表單標籤中。

<body> 
<form runat="server"> 

<!-- Panel must be added within here --> 
<div id="messages_con"> 
    <asp:Panel id="b_con" runat="server" /> 
</div> 

</form> 
</body> 

所以你添加它的面板需要在你的Html代碼中。您正在向頁面上不存在的面板添加按鈕。相反,參考Html中的面板(如上所示),如下所示:

Panel p = b_con; 
//p.ID = "b_con"; 
//p.Attributes.Add("runat", "server"); -- Not necessary 
this.Controls.Add(p); 
Button b = new Button(); 
b.Attributes.Add("value", "reply"); 
b.Attributes.Add("id", Convert.ToInt32(r["Message_ID"]).ToString()); 
b.Attributes.Add("class", "button"); 
b.Click += new System.EventHandler(button_Click); 
p.Controls.Add(b); 
+0

問題是,我在後面的代碼中創建了整個事情..我如何在後面的代碼中創建runat服務器窗體? – Fady

+0

你是說你沒有一個網頁,你把這個? –

+0

我有一個網頁,但其所有內容來自後面的代碼,因爲面板和按鈕取決於數據庫結果。我可以改變我使用的方式來做到這一點,但我是一個ASP新手,顯然我不知道如何..: – Fady

0

使用Form.Controls.Add(p);

通過使用這個,我們可以在窗體標籤上添加面板。