Добавление пользовательского элемента управления на страницу программно с сохранением уже имеющихся элементов управления - PullRequest
0 голосов
/ 25 марта 2011

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

По сути, я пытаюсь добавить пассажиров в систему путешествий - сведения о пассажирах находятся в пользовательском элементе управления, и я не знаю заранеесколько там будет.У меня есть кнопка добавления нового пассажира, которая должна добавить новый пользовательский элемент управления в div без перезаписи предыдущего пассажира.

Код c # /. Net 4.

Я попытался сохранитьуправляйте данными в viewstate и заново добавляйте их с новым, но это также не работает.Вот фрагмент кода, который я использую

foreach (Control uc in p_passengers.Controls) {
        Passenger p = uc as Passenger;
        if (p != null) {
            p.SaveValues();            
        }
    }

, однако p.SaveAs () (просто записывает значения элемента управления в ViewState) никогда не срабатывает.

Я уверен, что это просточто-то глупое, но есть идеи ??

Приветствия, ребята.

1 Ответ

3 голосов
/ 25 марта 2011

Вы воссоздаете все свои динамические элементы управления для каждой обратной передачи ?

Помните, что каждый постбэк является новым экземпляром класса Page, и любые ранее созданные вами элементы управления необходимо будет явно создать заново.

Обновление

Если у вас был список добавленных элементов в viewstate, что-то вроде этого ..

    private List<string> Items
    {
         get
         {
              return ViewState["Items"] = (ViewState["Items"] ?? new List<string>());
         }
    }

Тогда в вашем обработчике кликов вы можете просто добавить к этому списку:

   private void btn_Click(object sender, EventArgs e)
   {
        this.Items.Add("Another Item");
   }

Затем переопределить CreateChildControls

  protected overrides CreateChildControls()
  {
       foreach (string item in this.Items)
       {
            Passanger p = new Passenger();
            p.Something = item;
            this.p_passengers.Controls.Add(p);
       }
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...