На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
  
    > Динамическое добавление элементов
      Здравствуйте.
      Возникает ошибка при добавлении элемента по клику. Object reference not set to an instance of an object.

      protected override void OnPreInit(EventArgs e)
      {
      if (Session["OK"] != null)
      {
      TextBox ctrDataInvest = new TextBox();
      ctrDataInvest.ID = "adraf";
      ctrDataInvest.Text = "adrafj";
      ctrDataInvest.AutoPostBack = true;
      PlaceHolder1.Controls.Add(ctrDataInvest);
      }
      base.OnPreInit(e);
      }

      protected void Button1_Click(object sender, EventArgs e)
      {
      Session["OK"] = 2;
      Response.Redirect("default.aspx");
      }

      PlaceHolder1 находится в содержимом эталонной страницы, без использования эталонной страницы ошибки не возникает.

      Заранее спасибо.
        Решил задачу.

        OnPreInit заменил на OnInit.
        Как прочитал: при использовании эталонной страницы порядок следования событий начинается с OnPreInit, когда еще элементы Содержимого не созданы.
          Теперь другая проблема!!

          Хочу чтобы мой Контрол (текстбокс в данном случае) сохранялся и при следующем постбеке по нажатию кнопки добавлялся новый, то есть чтобы их количество увеличивалось.
          Пытался сохранять во ViewState PlaceHolder1.Controls - ничего не получилось. Также пытался работать с ControlState. В SaveControlState заходит, в LoadControlState нет:

          protected override object SaveControlState()
          {
          object[] stateToSave = new object[1];
          stateToSave[0] = PlaceHolder1.Controls;
          return stateToSave;
          }

          protected override void LoadControlState(object savedState)
          {
          object[] currentState = (object[])savedState;
          if (currentState == null) return;
          foreach (Control control in (ControlCollection)currentState[0])
          {
          PlaceHolder1.Controls.Add(control);
          }
          base.LoadControlState(savedState);
          }
            Спасибо всем, кто помогал))!!

            Долго мучился с проблемой! Да, все сохраняется во вьюстейте. Просто в моем коде Response.Redirect("default.aspx");

            А это делает запрос гет, то есть страница загружается сначала.
            0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
            0 пользователей:


            Рейтинг@Mail.ru
            [ Script execution time: 0,0251 ]   [ 15 queries used ]   [ Generated: 28.03.24, 09:12 GMT ]