2013-01-24 22 views
0

专家。如何使登录名称成为下拉列表框中的默认选项?

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

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

员工可以记录其他员工的条目。

到目前为止,员工必须从下拉列表中选择自己的姓名,并且我们不希望员工输入姓名,以保持一致性并保持数据的完整性。

我们现在的问题是如何让员工的登录名成为下拉列表中的默认选项。如果为其他empployee创建条目,员工可以从列表中选择另一个名称。

任何想法如何完成此任务?

非常感谢提前。

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 

回答

0

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

0

你可以在填充列表后简单地通过文本选择它吗?我相信你就会知道login_id一旦用户登录,那么你会发现从查询结果中的用户名,例如:

UNTESTED:

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

+0

没有得到任何错误,但我试过的一切都没有奏效。我已经使用底部的代码更新了我的帖子。你能看看我做错了什么吗? – Kenny

+0

我认为你需要设置一个断点,看看你的代码在做什么。 If语句是否真实,从而为'currentUserName'赋值? – Sam

0

如果您使用的表单或Windows身份验证,也不会你只需要使用:

txtLoginName.Text = User.Identity.Name 

我相信这将选择它,如果文本是在列表中,完全匹配。或者,只需使用Sam的方法。但是它是你想要的User.Identity.Name?

+0

@Sam,我应该在哪里使用您展示的示例? 史蒂夫,我试过使用它,但没有得到它的工作。难道是因为这不在我们使用AD的Intranet上? 拉坦,我认为你的建议与史蒂夫类似,不是吗? 如果不是,我可以使用任何示例? 谢谢各位 – Kenny

+0

如果您正在设置选定的值,可以在下拉列表的Databound事件中进行设置。如果你正在寻找用户名,我想我的下一个问题将是:你如何进行身份验证?这就是你的答案。 – Steve

+0

我们正在使用传统的登录脚本。 用户使用用户名/密码进行挑战。用户的信息通过调用数据库进行验证。 我本来可以使用像txtLoginName.Text = Session.Item(“username”)这样的会话。ToString和这可能工作得很好,但如前所述,如果一名员工为另一名员工创建此条目,那么我们不会要输入输入的雇员的姓名。这可能会导致不一致。我们宁愿从下拉列表中选择该名称。 – Kenny

相关问题