用存储过程填充下拉列表(显示用户名),然后向用户显示全名而不是用户名-慢

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;
             }
         }
     }
答案

您在每次迭代中创建上下文可能会花费一些时间。你能试试这个吗:

以上是关于用存储过程填充下拉列表(显示用户名),然后向用户显示全名而不是用户名-慢的主要内容,如果未能解决你的问题,请参考以下文章

我需要在另一个页面上回显从 mysql 填充的下拉选择

从下拉列表中显示数据php

重复网格中的用户输入以填充动态下拉列表

从 phpmyadmin 创建一个填充的下拉列表

JS 表单 - 动态填充下拉列表 - 多选,表单填充

从下拉列表中填充 Bootstrap 表单