0
我正在創建一個服務器控件,它將位於aspx
頁面中。當用戶選擇菜單選項時,html控件(選擇,輸入等)將被動態添加。我可以使用用戶控件來完成,但我不確定如何在服務器控件中進行操作。如何將動態HTML添加到服務器控件?
任何人都可以告訴我如何添加動態HTML到控件中後,它已經坐在一個頁面?
我正在創建一個服務器控件,它將位於aspx
頁面中。當用戶選擇菜單選項時,html控件(選擇,輸入等)將被動態添加。我可以使用用戶控件來完成,但我不確定如何在服務器控件中進行操作。如何將動態HTML添加到服務器控件?
任何人都可以告訴我如何添加動態HTML到控件中後,它已經坐在一個頁面?
由於您計劃添加多個控件作爲服務器控件的輸出,因此您應該考慮從CompositeControl繼承,該控件旨在與幾個組成控件一起使用,最小化執行常見操作所需的代碼,如保持狀態和處理成分控制事件
您需要覆蓋CreateChildControls以添加子控件。在這種方法中,你應該使用this.ChildControlsCreated = true;
指定是否創建子控件的結束,這是必要的,因爲CreateChildControls
是在ASP.Net page life-cycle
您需要申請,您通常適用於任何相同的規則調用多次服務器控件,例如實現INamingContainer接口,以確保子控件都會有一個唯一的客戶端ID
這是一個簡單的例子:
[DefaultProperty("UserText")]
[ToolboxData(@"<{0}:UserPassword runat=server UserText="""" PasswordText="""" />")]
public class UserPassword : CompositeControl
{
public event EventHandler Submitted = delegate { };
[Bindable(true)]
[Category("Appearance")]
[Description("User text")]
[DefaultValue("")]
[Localizable(true)]
public string UserText
{
get
{
var t = this.FindControl("Username") as TextBox;
return t.Text;
}
set
{
var t = this.FindControl("Username") as TextBox;
t.Text = value;
}
}
[Bindable(true)]
[Category("Appearance")]
[Description("Password text")]
[DefaultValue("")]
[Localizable(true)]
public string PasswordText
{
get
{
var t = this.FindControl("Password") as TextBox;
return t.Text;
}
set
{
var t = this.FindControl("Password") as TextBox;
t.Text = value;
}
}
protected override void CreateChildControls()
{
var p = new Panel { Width= new Unit(200), BackColor = Color.Silver };
var ul = new Label { Text = "Username: " };
var u = new TextBox { ID = "Username" };
var pal = new Label { Text = "Password: " };
var pa = new TextBox { ID = "Password", TextMode = TextBoxMode.Password };
var l = new Literal { Text = "<br />" };
var b = new Button { Text = "Log in" };
b.Click += (x, y) => this.Submitted(x, y);
p.Controls.Add(ul);
p.Controls.Add(u);
p.Controls.Add(l);
p.Controls.Add(pal);
p.Controls.Add(pa);
p.Controls.Add(l);
p.Controls.Add(l);
p.Controls.Add(b);
this.Controls.Add(p);
this.ChildControlsCreated = true;
}
}
我猜這是遺傳的,就像一個服務器控件? – Yatrix 2012-07-29 20:35:18
是的。這是一個服務器控件。在創建服務器控件時,您可以繼承Control,WebControl,CompositeControl或任何特定的控件,例如TextBox或Button。 – Jupaol 2012-07-29 21:51:12