Member 11403304 Ответов: 1

Как сделать так, чтобы метод заполнял выпадающий список?


Я не знаю, как изменить свой метод, чтобы он заполнял RequestorDropDownList при загрузке страницы.

Пользователь сможет выбрать только одно имя из списка RequestorDropDownList.

Пожалуйста помочь.

Что я уже пробовал:

Вот мой метод.
public async void RequestorDropDownList()
        {
            List<GetRequestorInfoModel> requestors = new List<GetRequestorInfoModel>();
            RequestorDropDownList.Items.Clear();
            RequestorUpdateDropDownList.Items.Clear();

            try
            {
                requestors = await FTACaseReset.Controllers.RequestorInfoController.GetAllRequestorInfoes();
                requestors = requestors.OrderBy(x => x.DisplayName).ToList();

                #region Populate RequestorDropDownList
                DropDownListItem firstRequestor = new DropDownListItem();
                firstRequestor.Text = "<-Please select Requestor->";
                firstRequestor.Value = 0;
                RequestorDropDownList.Items.Add(firstRequestor);

                for (int i = 0; i < requestors.Count; i++)
                {
                    DropDownItem item = new DropDownItem();
                    item.Text = requestors[i].DisplayName;
                    item.Value = requestors[i].RequestorInfoID;
                    RequestorDropDownList.Items.Add(item);
                }

                if (RequestorDropDownList.Items.Count > 0)
                    RequestorDropDownList.SelectedIndex = 0;
                #endregion

                #region Populate RequestorUpdateDropDownList
                for (int i = 0; i < requestors.Count; i++)
                {
                    DropDownItem item = new DropDownItem();
                    item.Text = requestors[i].DisplayName;
                    item.Value = requestors[i].RequestorInfoID;
                    RequestorDropDownList.Items.Add(item);
                }
                #endregion
            }
            catch (Exception ex)
            {
                string errorMsg = string.Format("An error has occured in {0}. \nException:\n{1}", "PopulateRequestorDropDownList()", ex.Message);
                MessageBox.Show(errorMsg, "Application Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

1 Ответов

Рейтинг:
5

Richard Deeming

Вы обновляете два списка, так что сделайте свой метод async Task вместо async void, и использовать Page.RegisterAsyncTask:

public async Task RequestorDropDownList() { ... }

public void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        Page.RegisterAsyncTask(new PageAsyncTask(RequestorDropDownList));
    }
}
NB: MessageBox.Show не будет работать в Ан ASP.NET применение. Ваш код работает на сервере, поэтому сообщение появится на сервере, где его никто никогда не увидит.

Может быть появиться для работы при отладке приложения в Visual Studio. Но это только потому, что в данном конкретном случае сервер и клиент-это один и тот же компьютер.

Особое примечание 2: В настоящее время вы добавляете элементы в RequestorDropDownList в обеих петлях. Я подозреваю, что второй цикл должен добавлять их в RequestorUpdateDropDownList.


Member 11403304

Еще раз спасибо тебе, Ричард. Я буду публиковать больше вопросов о разных вещах. Например, как скрыть страницу и отобразить страницу или панель и т. д.