Mi sono guardato intorno sul web e ho trovato alcuni articoli sull'argomento, ma non riesco ancora a capire la differenza tra loro. Ho il codice mostrato sotto, se eredito da un CompositeControl funziona perfettamente, ma non se eredito da un WebControl. (Entrambi rendono il codice, ma solo il CompositeControl gestisce l'evento)Differenza tra un WebControl e un CompositeControl?
using System;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace TestLibrary
{
public class TemplateControl : CompositeControl
{
TextBox txtName = new TextBox();
TextBox txtEmail = new TextBox();
Button btnSend = new Button();
private void SetValues()
{
btnSend.Text = "Skicka";
}
protected override void CreateChildControls()
{
SetValues();
this.Controls.Add(new LiteralControl("Namn: "));
this.Controls.Add(txtName);
this.Controls.Add(new LiteralControl("<br />"));
this.Controls.Add(new LiteralControl("Email: "));
this.Controls.Add(txtEmail);
this.Controls.Add(new LiteralControl("<br />"));
btnSend.Command += new CommandEventHandler(btnSend_Command);
this.Controls.Add(btnSend);
}
void btnSend_Command(object sender, CommandEventArgs e)
{
this.Page.Response.Write("Du har nu klickat på skicka-knappen! <br /><br />");
}
}
}
Così, quando si fa clic sul pulsante e il controllo è reso come un WebControl, non succede nulla. Ma se cambio il WebControl in un CompositeControl, il testo viene stampato. Perché? Qual è la differenza tra WebControl e CompositeControl?
Perfetto, grazie! – Patrick