用存储过程填充下拉列表(显示用户名),然后向用户显示全名而不是用户名-慢
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用存储过程填充下拉列表(显示用户名),然后向用户显示全名而不是用户名-慢相关的知识,希望对你有一定的参考价值。
我有一个下拉菜单-
<asp:DropDownList ID="OriginatorDropDown" DataTextField="User"
DataValueField="User" runat="server" CssClass="form-control">
<asp:ListItem Selected="True" Text="" Value="" /> </asp:DropDownList>
而且我正在页面加载中填充它。但是它确实很慢。我只有30个人在名单上,这不应该这么慢。任何请发表想法?
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
GetUsers();
}
}
private void GetUsers()
{
OriginatorDropDown.Items.Clear();
OriginatorDropDown.DataSource = GetUserData();
OriginatorDropDown.DataBind();
foreach (ListItem ltItem in OriginatorDropDown.Items)
{
if (ltItem.Text != String.Empty)
{
using (PrincipalContext pc = new PrincipalContext(ContextType.Domain))
{
UserPrincipal up = UserPrincipal.FindByIdentity(pc, IdentityType.SamAccountName
,ltItem.Text);
if (up != null)
{
ltItem.Text = up.DisplayName;
}
}
}
}
}
public DataSet GetUserData()
{
using (SqlConnection myConnection = new SqlConnection(ElectronicPayments))
{
//Get status descriptions
using (SqlCommand cmd = new SqlCommand("GetAllUsers", myConnection))
{
cmd.CommandType = CommandType.StoredProcedure;
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet user = new DataSet();
myConnection.Open();
da.Fill(user);
return user;
}
}
}
答案
您在每次迭代中创建上下文可能会花费一些时间。你能试试这个吗:
以上是关于用存储过程填充下拉列表(显示用户名),然后向用户显示全名而不是用户名-慢的主要内容,如果未能解决你的问题,请参考以下文章