Динамическое добавление элементов
    
  ![]()  | 
Наши проекты:
 Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту  | 
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS | 
| [216.73.216.5] | 
 
 | 
		
  | 
    Динамическое добавление элементов
    
  | 
         
         
         
          
           Сообщ.
           #1
          
          , 
          
         
         
        
       | 
    |
| 
         | 
      
          Здравствуйте. 
        
      Возникает ошибка при добавлении элемента по клику. 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 находится в содержимом эталонной страницы, без использования эталонной страницы ошибки не возникает. Заранее спасибо.  | 
    
| 
         
         
         
          
           Сообщ.
           #2
          
          , 
          
         
         
        
       | 
    |
| 
         | 
      
          Решил задачу. 
        
      OnPreInit заменил на OnInit. Как прочитал: при использовании эталонной страницы порядок следования событий начинается с OnPreInit, когда еще элементы Содержимого не созданы.  | 
    
| 
         
         
         
          
           Сообщ.
           #3
          
          , 
          
         
         
        
       | 
    |
| 
         | 
      
          Теперь другая проблема!! 
        
      Хочу чтобы мой Контрол (текстбокс в данном случае) сохранялся и при следующем постбеке по нажатию кнопки добавлялся новый, то есть чтобы их количество увеличивалось. Пытался сохранять во 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); }  | 
    
| 
         
         
         
          
           Сообщ.
           #4
          
          , 
          
         
         
        
       | 
    |
| 
         | 
      
          Спасибо всем, кто помогал))!! 
        
      Долго мучился с проблемой! Да, все сохраняется во вьюстейте. Просто в моем коде Response.Redirect("default.aspx"); А это делает запрос гет, то есть страница загружается сначала.  |