Wie wird nur das Layout (Vorlage) des CreateUserWizard-Steuerelements programmgesteuert geändert? Ich würde ein anderes Layout definieren (ohne die schreckliche Tabelle zu verwenden), aber weiterhin die gesamte Ereignisbehandlung und die Erstellung des Benutzers des CreateUserWizard-Steuerelements verwenden. Nur als Referenz funktioniert der folgende Code nicht und erzeugt ein unerwartetes Ergebnis, das meine Vorlage überhaupt nicht darstellt. Die Methode "InstantiateIn" der ITemplate wird nicht aufgerufen.Wie kann das Layout des CreateUserWizard-Steuerelements geändert werden?
public partial class b : System.Web.UI.Page
{
protected void Page_Init(object sender, EventArgs e)
{
CreateUserWizard createUserWizard = new CreateUserWizard();
createUserWizard.CreateUserStep.ContentTemplate = new Template();
Panel1.Controls.Add(createUserWizard);
}
}
public class Template : ITemplate
{
void ITemplate.InstantiateIn(Control container)
{
container.Controls.Add(new TextBox() { ID = "UserName" });
container.Controls.Add(new TextBox() { ID = "Password" });
container.Controls.Add(new TextBox() { ID = "ConfirmPassword" });
container.Controls.Add(new TextBox() { ID = "Email" });
container.Controls.Add(new PlaceHolder() { ID = "ErrorMessage" });
}
}
}
Gibt es einen Grund, es programmatisch hinzuzufügen oder nur um das Tabellenformat loszuwerden? Sie können das Layout in Markup nach Ihren Bedürfnissen anpassen. Und mit 4.0 asp.net rendert es nicht mehr als Tabelle. – gbs
@gbs: Danke für Ihren Vorschlag, aber es gibt keine Mark-up, weil das Steuerelement in einer vorkompilierten DLL endet. Außerdem versuche ich nicht nur, die Tabelle loszuwerden, sondern programmiere das ContentTemplate programmatisch aus einer geparsten XML-Datei. Das Layout wird also sehr variabel sein. Ich habe einen ähnlichen Ansatz für das Login-Steuerelement verwendet und das funktioniert perfekt. Das Login-Steuerelement ruft jedoch die InstantiateIn-Methode der ITemplate auf, während der CreateUserWizard dies nicht tut. – Bazzz