多用户权限管理

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_SelectedIndexChangedAutoPostBack="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)了

 

 

 

绑定DataGridDropdownlist的数据

 

先配置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> 节就可以配置一个比较简单的权限管理了