2009-05-22 6 views
4

Я создал элемент управления загрузкой файлов во время выполнения в панели. Теперь я хочу, чтобы удалил элемент управления нажатием кнопки ссылки.Как удалить динамически созданные элементы управления в asp.net

, как я могу это сделать ..

Ниже приведен код для управления динамически тары ..

protected void LinkButton1_Click(object sender, EventArgs e) 
{ 
    Panel1.Visible = true; 
    newattach(count); 
    count++;  
} 
private void newattach(int tot) 
{ 
    int i; 
    for (i = 0; i < tot; i++) 
    { 

     f1 = new FileUpload(); 
     f1.ID = "FileUpload" + count.ToString(); 
     f1.Height =20; 
     f1.Width = 150; 
     Panel1.Controls.Add(f1); 
    } 

} 

ответ

0

Я не пробовал, но я думаю, что должно работать для вас, если вы знаете, Идентификатор элемента управления вы хотите удалить:

Panel1.Controls.Remove(Panel1.FindControl("FileUploadID")); 
0

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

7

Как ответил выше, matt ?! ;)

Panel1.Controls.Remove(Panel1.FindControl("FileUploadID")); 

Должен работать, НО:

Run вы вся страница корыта отладчика вы найдете какие-то странные вещи .... И без понимания жизненного цикла страницы в. Net, а также основные принципы о динамических элементах управления, которые вы можете получить, чтобы ваш контроль снова появился, в зависимости от того, когда в жизненном цикле страницы вы создаете свой динамический элемент управления, поэтому ответ на вопрос о том, как правильно создавать динамические элементы управления в управляемом путь. Итак:

Динамические элементы управления в asp.net - эти принципы Юрий Solodkyy применяются:

Выполните этот последовательный подход к созданию элементов управления динамически:

  1. Создание элементов управления в методе CreateChildControls.
  2. Вызов EnsureChildControls в LoadViewState.
  3. Оберните и разверните состояние просмотра в объекте Pair, чтобы вызвать вызов LoadViewState.
  4. Сохраните расположение динамической части страницы в свойствах, поддерживаемых в ViewState.
  5. Восстановить динамические элементы управления в ответ на действия пользователя в обработчиках событий.

Другие важные примечания:

  1. Настройка ваши средства управления перед добавлением их в коллекцию элементов управления родительских элементов управления.
  2. Назначить уникальные идентификаторы динамически созданным элементам управления.
  3. Храните ссылки на динамически созданные элементы управления в локальных полях.
  4. Помните, что данные сообщения обрабатываются дважды: перед OnLoad и после OnLoad.

Я вообще использую следующий код позади шаблона страницы:

using System; 
using System.Collections; 
using System.Configuration; 
using System.Data; 
using System.Web; 
using System.Web.Security; 
using System.Web.UI; 
using System.Web.UI.HtmlControls; 
using System.Web.UI.WebControls; 
using System.Web.UI.WebControls.WebParts; 


public partial class template : BasePageGui 
{ 


     #region Introduction 
     private string msg; //this is the message you are going to show to your users 


     private TextBox [ ] holderForTxt;  //holder for dynamic textboxes 
     private DropDownList [ ] holderForDdl; 
     private HtmlInputRadioButton [ ] holderForRdb; 
     private HtmlInputCheckBox [ ] holderForCkb; 

     private Label [ ] holderForAst; 

     DataSet ds;    //dataset for metadata 
     DataSet pds;   //parameter dataset 
     DataSet rds;   //return set dataset 


     #endregion 


     #region Properties 
     //set here page properties to use with the viewstate 
     #endregion //Properties 


     #region TemplateMethods 
     protected override void OnInit (EventArgs e) 
     { 
     } //eof OnInit 


     protected override void CreateChildControls() 
     { 
       base.CreateChildControls(); 
       CreateDynamicControls(); 
     } 


     protected override object SaveViewState() 
     { 
       return new Pair (base.SaveViewState() , null); 
     } 

     protected override void LoadViewState (object savedState) 
     { 
       base.LoadViewState (((Pair) savedState).First); 
       EnsureChildControls(); 
     } 


     protected void Page_Load (object sender , EventArgs e) 
     { //comm -- the controls should be generated at the init stage and the databinding happens here 

       if (this.IsPostBack == false) 
       { 
       } //eof on first load 
       else 
       { 
       } //eof on post back 
       this.DataBind(); 
     } //eof method 



     private void CreateDynamicControls() 
     { 

     } //eof method 

     #endregion //TemplateMethods 


     #region DisplayMethods 


     #endregion //DisplayMethods 


     #region ClickEventHandlers 

    #endregion ClickEventHandlers 


     #region GridViewEventHanlders 

    #endregion //GridViewEventHandlers 
} //eof class 
Смежные вопросы