0

专家。

当用户登录我们的一个网络应用程序时,会出现一个下拉列表,其中包含我们所有员工的姓名。

员工可以登录系统将他或她的条目记录到数据库中。

该员工可以记录另一位员工的条目。

到目前为止,员工必须从下拉列表中选择他或她的姓名,我们不希望员工输入他们的姓名,只是为了保持一致性和保持数据完整性。

我们目前的问题是如何让员工的登录名成为下拉菜单中的默认选项。如果为其他员工进行条目,员工可以从列表中选择另一个姓名。

任何想法如何完成这项任务?

提前非常感谢。

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    If Not IsPostBack Then
        Dim s As String
        Dim reader As OleDbDataReader
        txtFullName.Text = Session.Item("assignedTo").ToString

      'Initialize Connection
        s = "Select login_id, UserName from tblusers ORDER BY UserName"
        Dim connStr As String = ConfigurationManager.ConnectionStrings("allstringconstrng").ConnectionString
        Dim conn As New OleDbConnection(connStr)
        Dim cmd As New OleDbCommand(s, conn)

        'Open the connection
        conn.Open()

        Try

            'Execute the Login command
            reader = cmd.ExecuteReader()
            'Populate the list of Users

            txtLoginName.DataSource = reader
            txtLoginName.DataValueField = "login_id"
            txtLoginName.DataTextField = "UserName" 
            txtLoginName.DataBind()
            'Close the reader
            reader.Close()

        Finally
            'Close Connection
            conn.Close()
        End Try
    End If

End Sub

<--新代码-->试试

        'Execute the Login command
        reader = cmd.ExecuteReader()
        'Populate the list of Users
        Dim currentUserName As String = ""

        While reader.Read()
            If (reader("login_id").ToString().Equals(currentUserName)) Then
                currentUserName = reader("UserName").ToString()
            End If
        End While

        txtLoginName.SelectedValue = currentUserName


        'Close the reader
        reader.Close()

    Finally
        'Close Connection
        conn.Close()
    End Try
4

3 回答 3

0

如果您正在使用表单或 Windows 身份验证,您不会只使用:

txtLoginName.Text = User.Identity.Name

我相信如果文本在列表中并且完全匹配,这将选择它。或者,只需使用 Sam 的方法。但它是您正在寻找的 User.Identity.Name 吗?

于 2013-01-24T17:47:57.547 回答
0

您可以使用 Page.User 属性来获取名称,然后将其分配给下拉菜单在 Page_Load 事件中选择的值。

于 2013-01-24T17:30:16.727 回答
0

您可以在填充列表后简单地通过文本选择它吗?我假设您login_id一旦用户登录就会知道,因此您可以从查询结果中找到用户名,如下所示:

未经测试:

string currentUserName = "";
While reader.Read()
    If (reader("login_id").ToString().Equals(currentUserLogin)) Then
        currentUserName = reader("UserName").ToString()
    End If
End While

然后,通过结果填充列表后,按用户名选择正确的用户。

txtLoginName.Items.FindByValue(UserName).Selected = true;

或者更好的是,因为您应该已经知道login_id,您可以简单地从填充的下拉列表中按值选择,如下所示:

txtLoginName.SelectedValue = login_id

值得注意的是,这是一个非常大的假设,即login_id将存在于列表中。在选择之前,您可能需要先执行适当的检查以查看是否login_id存在。

于 2013-01-24T17:31:54.297 回答