多用户权限管理
1. 在做这个演示程序时我学到的知识
1>.在DataGrid中嵌套绑定数据的Dropdownlist
2>.给嵌套于DataGrid中的Dropdownlist赋予事件
2. 重点、难点
1>.熟悉表单验证,配置web.config文件
2>.使用System.web.Security
============================================
给嵌套于DataGrid中的Dropdownlist赋予事件
Private Sub DgEditRole_EditCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DgEditRole.EditCommand
Dim PerDdlRoleName As DropDownList = e.Item.FindControl("DdlRoleName")
Dim RoleName As String = PerDdlRoleName.SelectedItem.Text ''''''''出错的语句
Response.Write(PerDdlRoleName.SelectedItem.Text)
End Sub
错误提示:未将对象引用到实例
???
这是事件的先后顺序的问题:
因为dropdownlist是在editItem里的,当点击edit按钮触发EditCommand事件时,这个dropdownlist都还没有生成,所以e.Item.FindControl("DdlRoleName")此时是找不到的。
解决方法如下:
Private Sub DgEditRole_ItemCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles DgEditRole.ItemCreated
If e.Item.ItemType = ListItemType.EditItem Then
Dim PerDdlRoleName As DropDownList = e.Item.FindControl("DdlRoleName")
PerDdlRoleName.SelectedIndex = 2
End If
Dropdownlist的事件(以SelectedIndexChanged为例)
Html: 配置所对应的Dropdownlistde 属性:OnSelectedIndexChanged= PerDdlRoleName_SelectedIndexChanged;AutoPostBack="true"
程序代码:
Sub PerDdlRoleName_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs)
'Response.Write("asdklf")
Dim i As String
i = CType(sender, DropDownList).SelectedItem.Text
response.write(i)
End Sub
此时就可以正确的引发Datagrid中的Dropdownlist事件(SelectedIndexChanged)了
绑定DataGrid中Dropdownlist的数据
先配置html:
<asp:DropDownList id="DdlDiscuss" runat="server" DataSource="<%# DiscussDataBind() %>" DataTextField="DiscussName" DataValueField="DiscussId" Width="186px" AutoPostBack="false">
</asp:DropDownList>
然后给dropdownlist配置数据源DiscussDataBind()就可以了
熟悉表单验证,配置web.config文件
我博客上有一篇关于认识web.config文件的文章,讲解比较详细
使用System.web.Security
在页面引入这个类
FormsAuthentication.RedirectFromLoginPage(TxtUserName.Text, False) '让用户通过验证,并转向最初请求的页面
再结合web.config文件中的<authentication> 节和<authorization> 节就可以配置一个比较简单的权限管理了