Asp.net按钮从Sql字段禁用值

Asp.net按钮从Sql字段禁用值,sql,asp.net,vb.net,Sql,Asp.net,Vb.net,标题可能不是最好的描述,但我想帮助您禁用按钮,具体取决于哪个用户单击它 我知道我应该把连接字符串放到web.config中,我会的,但是我不能让这个按钮工作 HasRowsyest会查看是否有行,但我可能会做错 我在表中有3行,只有一行='reports',所有3个用户仍然可以单击按钮吗 有人能帮我吗 Protected Sub LeftMenuBarReportsButton_Click(sender As Object, e As System.EventArgs) Handles Left

标题可能不是最好的描述,但我想帮助您禁用按钮,具体取决于哪个用户单击它

我知道我应该把连接字符串放到
web.config
中,我会的,但是我不能让这个按钮工作

HasRows
yest会查看是否有行,但我可能会做错

我在表中有3行,只有一行='reports',所有3个用户仍然可以单击按钮吗

有人能帮我吗

Protected Sub LeftMenuBarReportsButton_Click(sender As Object, e As System.EventArgs) Handles LeftMenuBarReportsButton.Click

    Dim sqlconn As New SqlConnection
    Dim sqCmd As New SqlCommand      
    Dim sqlreader As SqlDataReader    

    sqlconn.ConnectionString = "server = ....;Database=......;User ID=......;Password=...."   'SQL Connection String

    sqCmd.Connection = sqlconn
    sqlconn.Open()
    sqCmd.CommandText = "SELECT UserID,Password,Role FROM UserCredentials WHERE Role = 'Reports'"
    sqlreader = sqCmd.ExecuteReader

    If sqlreader.HasRows Then

        Response.Redirect("Reports.aspx")

    Else
        Dim click As Button = sender
        click.Enabled = False
        LeftMenuBarReportsButton.BackColor = Drawing.Color.Red
        LeftMenuBarReportsButton.Text = "Access Denied"
    End If

    sqlreader.Close()
    sqlconn.Close()

您确定要在他们每次单击时进行检查吗?当用户等待解决时,它需要大量的网络延迟和其他事情。您可能希望创建一个公共的“hasAccess”布尔值,并在以后刷新它。但是,我不知道你的设置。是的,服务器是一个测试服务器,所以这很好,我想知道我做错了什么?为什么你要通过
发送者
引用按钮?就在下面,您通过
LeftMenuBarReportsButton
引用它。作为旁注,如果我错了,有人会纠正我。。。由于您是在关闭连接之前重定向的,这可能会填满您的连接池。至于您的问题,您只是在SQL中检查当时是否有角色为“Reports”的用户,而不是检查他们中的任何一个是否为当前用户。您的连接字符串应该在web.config中,这是正确的,但是您的数据层也不应该在表示层中,有关DB的所有内容都应该在表示层之外,对数据层的访问应该跨越实体层和逻辑层。