Nebojte se, tento článek nebude o pokoutných praktikách a užití magie v této velice zajímavé webové technologii, nýbrž o nových ovládacích prvcích, které slouží jako průvodci, známí z Windows. Každý může mít svůj názor na jejich opodstatnění na webu, ale v některých scénářích jsou k nezaplacení a usnadňují vývoj.
Asi první šaman, na kterého narazíte je
asp:CreateUserWizard, který je součástí Membership API. Tento
šaman slouží, jak už název napovídá, k vytváření nových
uživatelů aplikace. Tento šaman má implementované dva kroky:
asp:CreateUserWizardStep– Zadání požadovaných údajů, potřebných k vytvoření nového uživatele.asp:CompleteWizardStep– Hláška o úspěšném dokončení vytváření uživatele.
Krom těchto dvou si můžete přidat libovolné množství vlastních
kroků, například krok, ve kterém přidělíme uživateli jeho Role. Každý
kontrol, který je odvozený od třídy Wizard má vlastnost
WizardSteps, kam můžete přidávat vlastní kroky šamana.
Takže následující kus kódu představuje šamana na vytvoření uživatele
s přidělením uživatelské role.
<asp:CreateUserWizard ID="NovyUzivatelWizard" runat="server" LoginCreatedUser="false" OnActiveStepChanged="NovyUzivatelWizard_ActiveStepChanged" OnContinueButtonClick="NovyUzivatelWizard_ContinueButtonClick">
<WizardSteps>
<asp:CreateUserWizardStep ID="CreateUserWizardStep1" runat="server" Title="Vytvoření nového uživatele"></asp:CreateUserWizardStep>
<asp:WizardStep ID="WizardStep1" runat="server" AllowReturn="False" EnableTheming="True" StepType="Step" Title="Role nového uživatele">
Role nového uživatele<br />
<asp:CheckBoxList ID="UzivatelskeRoleList" runat="server"></asp:CheckBoxList>
</asp:WizardStep>
<asp:CompleteWizardStep ID="CompleteWizardStep1" runat="server" Title="Hotovo"><asp:CompleteWizardStep>
</WizardSteps>
</asp:CreateUserWizard>
Jak vidíte, implementace vlastních kroků v designové části není
moc náročná. Krom přidělení ovladačů událostí pro přechod mezi
jednotlivými kroky, jsem přidal vlastnost, která ošetřuje „podivné
chování“, kdy se po vytvoření uživatele dojde k jeho automatickému
nalogování. Takže pokud se divíte, že po vytvoření nového uživatele
jste ve vaší aplikaci někým jiným, nastavte vlastnost
LoginCreatedUser na false.
Pokud měníte kolekci WizardSteps, nezapomeňte na původní kroky,
to jen tak pro jistotu :). A nyní přistoupíme k programové
části šamana. Zde musíme ošetřit chování jednotlivých kroků
v ovladačích událostí OnActiveStepChanged a
OnContinueButtonClick.
protected void NovyUzivatelWizard_ActiveStepChanged(object sender, EventArgs e)
{
// pokud je aktivní krok pro výběr rolí
if (NovyUzivatelWizard.ActiveStepIndex == 1) {
// načteme všechny uživatelské role a svážeme je s datovým prvkem
UzivatelskeRoleList.DataSource = Roles.GetAllRoles();
UzivatelskeRoleList.DataBind();
}
}
protected void NovyUzivatelWizard_ContinueButtonClick(object sender, EventArgs e)
{
// pokud je aktivní krok pro výběr rolí
if (NovyUzivatelWizard.ActiveStepIndex == 1) {
StringBuilder sb = new StringBuilder();
// projedeme pole checkboxů
for (int i = 0; i < UzivatelskeRoleList.Items.Count; i++) {
// pokud je vybraná role
if (UzivatelskeRoleList.Items[i].Selected) {
// přidáme její název do kolekce
sb.Append(UzivatelskeRoleList.Items[i].Text + ",");
}
}
// přiřadíme novému uživateli jeho role
Roles.AddUserToRoles(NovyUzivatelWizard.UserName, sb.ToString().Split(','));
}
}
Na kódu asi není nic zvláštního, důležité je zjišťování
aktivního kroku šamana pomocí vlastnosti ActiveStepIndex.
Zbytek kódu se věnuje načtení kolekce uživatelských rolí do
CheckBoxListu a pak přiřazení vybraných rolí nově vytvořenému
uživateli.
Toto byla ukázka funkčnosti konkrétního šamana, ale vy si můžete
pomocí toho konceptu vytvořit vlastní šamany postavené na ovládacím
prvku asp:Wizard. Nazapomeňtě, že se třída Wizard **renderuje
do tabulky **, což zhoršuje její přístupnost, ale i to se dá obejít
– téma na další pokračování. Toť vše, drazí čtenáři, doufám, že
jsem vám alespoň trochu pomohl s pronikáním do tajů ASP.NET 2.0.











Komentáře
Zatím bez komentáře. Buď první!
Místo pro tvůj názor