在ascx.cs文件中,我動態生成按鈕。在.aspx文件中,我將控件添加到窗體。控制本身呈現良好,但點擊按鈕時,我得到這個錯誤在用戶控件中動態創建的控件不被識別
錯誤已經發生,因爲ID爲「ctl03」控制不能 位於或之後不同的控制被分配到同一個ID 回傳。
DestopControl.ascx.cs
public partial class DesktopControl : PlaceHolder
{
public void Build()
{
for (int i = 0; i < 10; i++)
{
Button button = new Button()
{
Width = 50,
Height = 50,
ID = string.Format("button{0}", i),
Text = i.ToString()
};
button.Click+=new EventHandler(button_Click);
}
}
}
Default.aspx.cs
DesktopControl desktop = new DesktopControl();
desktop.Build();
MainContent.Controls.Add(desktop);
你有你的Default.aspx代碼(如上所示)在一個'if(!isPostBack){}'裏面嗎?如果是的話,把它從那裏拿出來。 – Darren
另外 - 什麼是'ctl03' - 這看起來不是你的代碼中的一個ID - 它們會是'button1'等 – Darren
我的項目中的一切都是動態創建的控件。第一次在Page_Load事件中,If(!isPostBack){ShowLoginPage(); }其他{ReloadUI(Session [「ui」]); }。 基本上,我調用了一個返回UI定義的wcf服務。我根據定義和form1.Controls.Add(control)生成控件。 登錄後,WCF發送'桌面'作爲用戶界面,我實例化這個'DesktopControl'並將其添加到form1.Controls.Add(桌面)。但登錄用戶界面停留在那裏。我不知道如何在渲染新的UI之前清除屏幕。 – gangt