繁体   English   中英

如何在下拉列表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 Web应用程序的形式; 主联系人的下拉列表包含一个名称列表。 此列表对于已登录到应用程序的不同用户是不同的。

通过数据库字段中的选择查询填充数据。 (选择查询通过内部两个表EmployerUser表和User表来获取数据。User表的主键是ID,这是EmployerUser表中名为UserID的外键。)

在前端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

问题是:此编码未为主要联系人设置默认值。 我想在主要联系人的下拉列表中设置默认值。 在大多数情况下,默认值是用户本人。 因此,如果将当前用户设置为下拉列表中的默认值,并且如果他本人不是主要联系人,则该用户还能够从下拉列表中更改值,这将是理想的。

我怎样才能做到这一点。

我可以单独确定谁是当前登录的用户。

确定当前用户的编码是(可以通过从用户表中获取数据的选择查询来确定当前登录的用户。)

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/zh-cn/library/system.web.ui.webcontrols.listcontrol.selectedvalue(v=vs.110).aspx?cs-save-lang=1&cs-lang=vb#代码片断-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))

希望你会发现这篇文章有用

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM