如何在下拉列表 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)
下面几行代码解决了我的问题。所以如果有人有类似的问题,我想分享一下。
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 有用
在我的 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)
下面几行代码解决了我的问题。所以如果有人有类似的问题,我想分享一下。
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 有用