【发布时间】:2011-10-12 23:43:49
【问题描述】:
我有两个关系表:包含 3 种用户角色(经理、开发人员、普通用户)的 Profiles 表和包含 Access 2010 数据库中用户及其角色 ID(Profile_ID 字段)的信息的 Users 表.
我在 ASP.NET 中创建了一个 Web 表单,它应该简单地注册用户、询问他们的姓名、在下拉列表中选择他们的角色并将其全部插入 Access 数据库中。该代码会为每个注册用户填充一个网格视图,并为页面加载时的每个角色填充一个下拉列表:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
'Start connection
Dim cs As String = ConfigurationManager.ConnectionStrings("Access 2010").ConnectionString
Dim cn As New OleDbConnection(cs)
cn.Open()
'Retrieve User Data
Dim cmd As New OleDbCommand
With cmd
.Connection = cn
.CommandText = "SELECT * FROM Users"
.CommandType = CommandType.Text
End With
Dim ddlValues As OleDbDataReader = cmd.ExecuteReader()
'Populate User Grid View
grdUsers.DataSource = ddlValues
grdUsers.DataBind()
ddlValues.Close()
'Retrieve Profile data
With cmd
.Connection = cn
.CommandText = "SELECT * FROM Profiles"
.CommandType = CommandType.Text
End With
ddlValues = cmd.ExecuteReader()
'Populate Dropdown Profiles
ddRoles.DataSource = ddlValues
ddRoles.DataTextField = "Nome"
ddRoles.DataValueField = "ID"
ddRoles.DataBind()
'Close connections
ddlValues.Close()
cmd.Dispose()
cn.Dispose()
End Sub
最近,一旦单击按钮,它就会插入数据库:
Protected Sub btnRegister_Click(sender As Object, e As EventArgs) Handles btnRegister.Click
Dim cs As String = ConfigurationManager.ConnectionStrings("Access 2010").ConnectionString
Dim cn As New OleDbConnection(cs)
Dim cmd As New OleDbCommand
With cmd
.CommandText = "INSERT INTO Users (nome, Profile_ID) VALUES ('" & Me.txtNome.Text & "', " & Me.ddRoles.SelectedValue & ")"
.Connection = cn
.Connection.Open()
.ExecuteNonQuery()
.Connection.Close()
.Dispose()
End With
cn.Dispose()
Response.Redirect(Request.Url.AbsoluteUri)
End Sub
代码运行没有问题,但无论我选择下拉列表中的哪个项目,它都将始终创建为普通用户(这是该表中的第一条记录)。虽然我检查了生成的html:
<select name="ctl00$MainContent$ddRoles" id="MainContent_ddRoles">
<option value="5">Common User</option>
<option value="6">Developer</option>
<option value="7">Manager</option>
看起来不错,但我的数据库中只有 ID 号为 5 的记录。有人可以帮帮我吗?
【问题讨论】:
标签: asp.net visual-studio ms-access