vrijdag 31 oktober 2008

Verbergen van Next / Previous controls in ASP.NET WizardControl

Vandaag had ik een probleem met het verbergen van de Next / Previous links/buttons van een ASP.NET WizardControl.

Hierbij liep ik tegen 2 problemen aan:
  1. Middels de standaard methode FindControl op het WizardControl object kan de betreffende LinkButton niet gevonden worden. Hiervoor het ik zelf een FindControl methode gemaakt, welke hieronder is bijgevoegd
  2. Het aanpassen van de eigenschap [LinkButton].Visible naar False blijkt niet te werken. Waarschijnlijk negeert het WizardControl deze eigenscap in de eigen Render methode. In plaats van de Visible eigenschap kan je de Style eigenschap gebruiken:
    [LinkButton].Style["display"] = "none";

De code behorende bij punt 1 (deze methode zoek recursief, binnen een container control, naar het control met het betreffence ID):

public static Control FindControl(string controlID, Control container) 
{
foreach (Control ctrl in container.Controls)
{
if (ctrl.ID != null && ctrl.ID.Equals(controlID))
return ctrl;
if (ctrl.HasControls())
{
Control c = FindControl(controlID, ctrl);
if (c != null) return c;
}
}
return null;
}

Een voorbeeld van het verbergen van de Next link op de eerste Wizard Step:

WebControl = FindControl("StartNextLinkButton", this.wizardControl1) as WebControl;
nextLink.Style["display"] = "none";

Bronnen: Microsoft MSDN