如何在下拉列表 ASP.Net 和 VB.Net 应用程序中将当前用户设置为默认值

How can I set current user as default value in the drop down list ASP.Net and VB.Net application

在我的 asp.net 和 vb.net 网络申请表中; 主要联系人 的下拉列表包含一个姓名列表。对于登录到应用程序的不同用户,此列表是不同的。

数据由来自数据库字段的 select 查询填充。 (select查询通过Innerjoining两个tables-EmployerUsertable&Usertable获取数据。Usertable的主键是ID,是外键名为 UserID 的 EmployerUser table。)

在前端ASP.net编码是

               <div class="form-element">
                    <label>
                        Main contact (required)
                    </label>
                    <asp:DropDownList ID="comMainContact" runat="server" CssClass="chosen" EnableViewState="True"
                        DataTextField="name" DataValueField="id" />
                </div>

在后端 VB.net 下拉列表的编码是

       comMainContact.DataSource = LocalHelper.CachedEmployerUserList(LocalHelper.UserEmployerID)
       comMainContact.DataBind()


       Public Shared Function CachedEmployerUserList(ByVal employerid As Integer) As DataTable
               Dim CacheName As String = "helper_cachedemployeruserlist_" & CStr(employerid)
               Dim DataList As DataTable = Nothing

               Try
                  DataList = HttpContext.Current.Cache.Item(CacheName)
               Catch

               End Try

               If DataList Is Nothing Then

                     DataList = Core.DB.GetData("SELECT [User].id AS 'id', [User].name + ' ' + [User].Surname AS 'name' FROM EmployerUser INNER JOIN [User] ON EmployerUser.userid = [User].id WHERE [User].deleted = 0 AND [User].active = 1 AND [User].emailverified IS NOT NULL AND EmployerUser.employerid = @employerid ORDER BY [User].surname, [User].name", Core.DB.SIP("employerid", employerid))
        HttpContext.Current.Cache.Insert(CacheName, DataList, Nothing, DateAdd(DateInterval.Minute, 1, Now), System.Web.Caching.Cache.NoSlidingExpiration)

               End If

               Dim FinalList As DataTable = DataList.Copy

               Return FinalList

         End Function

问题是:此编码没有为主触点设置默认值。我想在主要联系人的下拉列表中设置一个默认值。在大多数情况下,默认值是用户自己。因此,如果将当前用户设置为下拉列表中的默认值,并且如果用户不是主要联系人,则用户也可以从下拉列表中更改值,这将是理想的。

我该怎么做。

我可以单独判断谁是当前登录的用户。

确定当前用户的代码是(当前登录的用户可以通过 select 从用户 table 获取数据的查询来确定)

Public Class User

 Public Shared Function UserFullName(ByVal User As Mypeoplebiz.User, Optional ByVal Title As Boolean = True) As String

        If Title Then

            Return Core.DB.GetString("SELECT name FROM Title WHERE id = @titleid", Core.DB.SIP("titleid", User.TitleID)) & " " & User.Name & " " & User.Surname

        Else
            Return User.Name & " " & User.Surname

        End If

    End Function

End Class

如何将当前用户设置为下拉列表中的默认值,并为用户提供从下拉列表中更改值的选项。

感谢您的帮助。

谢谢

将下拉列表的 SelectedValue 属性 设置为用户名字符串:

comMainContact.SelectedValue = UserFullName(arguments)

https://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listcontrol.selectedvalue(v=vs.110).aspx?cs-save-lang=1&cs-lang=vb#code-snippet-2

下面几行代码解决了我的问题。所以如果有人有类似的问题,我想分享一下。

    Private strUserName As String = ""

            strUserName = Core.DB.GetString("SELECT name + ' '+surname FROM [user] WHERE id = " & LocalHelper.UserID)
            comMainContact.DataSource = LocalHelper.CachedEmployerUserList(LocalHelper.UserEmployerID)
            comMainContact.DataBind()
            comMainContact.SelectedIndex = comMainContact.Items.IndexOf(comMainContact.Items.FindByText(strUserName))

希望您会发现 post 有用