Dobrý den, přesně v tomto článku jsem inspiraci hledal ....ale. Z článku: Nyní nám tedy zbývá ošetřit událost CheckedChanged našeho CheckBoxu. Podle toho, jestli bude zaškrtnutý, nebo ne, uživatele do role admin přidáme, nebo z této role odebereme. Nahoře v okně kódu vyberte v prvním rozbalovacím seznamu komponentu AdminCheckBox a ve druhém událost CheckedChanged. Tím se nám vygeneruje její kód. Problém: V prvním rozbalovacím seznamu je pouze prvek GridView. Dříve tuším (ve starých verzích VS) tam byli vidět i prvky uvnitř gridu, i když možná se pletu. Nakonec jsem to vyřešil následovně, asi špatně, ale zatím to funguje a později se k tomu vrátím. Jen jsem potřeboval upravit jedinou stránku.Primárně ted dělám v PL-SQL na Oracle DB takže nemám čas se tomu věnovat do hloubky.
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" DataKeyNames="UserName" CssClass="grid">
<RowStyle CssClass="rA" />
<AlternatingRowStyle CssClass="rB" />
<Columns>
<asp:BoundField HeaderText="Uživatelské jméno" ItemStyle-Font-Bold="true" DataField="UserName" />
<asp:BoundField HeaderText="E-mail" DataField="Email" />
<asp:BoundField HeaderText="Naposledy přihlášen" DataField="LastLoginDate" />
<asp:TemplateField HeaderText="Administrátor" ItemStyle-HorizontalAlign="Center">
<ItemTemplate>
<asp:CheckBox ID="AdminCheckBox" runat="server" AutoPostBack="true" Checked='<%#Roles.IsUserInRole(Eval("UserName").ToString(), "Admin")%>' OnCheckedChanged="AdminCheckBox_CheckedChanged" Enabled='<%#UCase(Eval("UserName")) <> "ADMIN"%>' />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
a do kódu jsem vložil toto ručně psáno.
public Sub AdminCheckBox_CheckedChanged(sender As Object, e As EventArgs)
Dim chb As CheckBox = CType(sender, CheckBox)
Dim row As GridViewRow = CType(chb.NamingContainer, GridViewRow)
Dim username As String = GridView1.DataKeys(row.DataItemIndex).Value
If chb.Checked Then 'přiřadit uživatele do role
Roles.AddUserToRole(username, "admin")
Else 'odebrat uživatele z role
Roles.RemoveUserFromRole(username, "admin")
End If
End Sub
Ten Public je tam z důvodu že když tam dam Private tak skončí chybou: Compiler Error Message: BC30456: 'AdminCheckBox_CheckedChanged' is not a member of 'ASP.administrace_spravaroli_aspx'.
|