管理者がドロップダウンリストからユーザーを選択し、そのユーザーに関連付けられたロールをチェックボックスに表示してもらいたいと考えています。
以下のコードを実行しようとすると、
varchar 値 'John Mayer' をデータ型 int に変換するときに変換に失敗しました
これを解決する方法はありますか?
以下は私が使用しているコードです。
'//Markup
<p>
<b>Select a User:</b>
<asp:DropDownList ID="UserList" runat="server" AutoPostBack="True"
DataTextField="UserName" DataValueField="LoginId" OnSelectedIndexChanged="UserList_SelectedIndexChanged">
</asp:DropDownList>
</p>
<p>
<div class="roleList">
<asp:CheckBoxList ID="RoleList" runat="server">
</asp:CheckBoxList>
</div>
'//CodeBehind
Public Sub PopulateUserList()
Dim cmd As New SqlCommand("Select LoginId,UserName from tblLogin", New SqlConnection(ConfigurationManager.ConnectionStrings("DBConnectionString").ConnectionString))
cmd.Connection.Open()
Dim ddlValues As SqlDataReader
ddlValues = cmd.ExecuteReader()
UserList.DataSource = ddlValues
UserList.DataValueField = "LoginId"
UserList.DataTextField = "UserName"
UserList.DataBind()
cmd.Connection.Close()
cmd.Connection.Dispose()
End Sub
Protected Sub UserList_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs)
Dim conn As String = ConfigurationManager.ConnectionStrings("DBConnectionString").ConnectionString
Dim ds As DataSet = New DataSet()
Dim sql As String = "select UserRoles from tblLogin where userName = " + UserList.SelectedValue
Dim AD As New SqlDataAdapter(sql, conn)
AD.Fill(ds, "table")
RoleList.DataSource = ds.Tables(0)
RoleList.DataTextField = "UserRoles"
RoleList.DataValueField = "LoginId"
RoleList.DataBind()
End Sub
ありがとうございました