2014-01-24 3 views
0

вот мой сценарий: if! Page.Ispostback Я заполняю выпадающий список из базы данных! Также на странице есть бутрон и onclick он получает один идентификатор из базы данных и складывает одну панель В КОГДА ДИНАМИЧЕСКИ СОЗДАНА КНОПКА. ПРОБЛЕМА, КОГДА Я НАЖМИТЕ ЭТУ ДИНАМИЧЕСКИ СОЗДАННУЮ КНОПКУ _ ТОЛЬКО НИЧЕГО ПРОИСХОДИТ, И Я НЕ ПРЕДОСТАВЛЯЮТ ПОЧЕМУ.Почему моя функция не выполняется после нажатия динамически созданной кнопки

protected void Page_Load(object sender, EventArgs e) 
     { 
      if (!IsPostBack) 
      { 
       ddlLanguages.DataSource = this.catRep.GetAllAvailableLanguages(); 
       ddlLanguages.DataBind(); 
      } 

      //IEnumerable<CatgoriesLanguages> allcategories = this.catRep.GetAllCategoriesByID(1) 

     } 



     protected void btnAddNew_Click(object sender, EventArgs e) 
     { 
      inseredID = this.catRep.AddCategory(); 

      Label mylab = new Label(); 
      mylab.Text = "Yeeee" + inseredID; 
      Page.FindControl("form1").Controls.Add(mylab); 

      Panel myFieldSet = new Panel(); 
      myFieldSet.GroupingText= "Add New Category"; 
      Label lblTitle = new Label(); 
      lblTitle.Text="Title: "; 
      myFieldSet.Controls.Add(lblTitle); 
      TextBox txbTitle = new TextBox(); 
      txbTitle.ID = "txbTitle"; 
      myFieldSet.Controls.Add(txbTitle); 
      myFieldSet.Controls.Add(new LiteralControl("<br />")); 

      Label lblShrtDescrpt = new Label(); 
      lblShrtDescrpt.Text = "Short Description: "; 
      myFieldSet.Controls.Add(lblShrtDescrpt); 
      TextBox txbShrtDescrpt = new TextBox(); 
      txbShrtDescrpt.ID = "txbShrtDescrpt"; 
      myFieldSet.Controls.Add(txbShrtDescrpt); 
      myFieldSet.Controls.Add(new LiteralControl("<br />")); 
      Label lblDescrpt = new Label(); 
      lblDescrpt.Text = "Description: "; 
      myFieldSet.Controls.Add(lblDescrpt); 
      TextBox txbDescrpt = new TextBox(); 
      txbDescrpt.ID = "txbDescrpt"; 
      myFieldSet.Controls.Add(txbDescrpt); 
      Button btnAddcategorieslanguage = new Button(); 
      btnAddcategorieslanguage.Click += new EventHandler(btnAddcategorieslanguage_Click); 
      myFieldSet.Controls.Add(btnAddcategorieslanguage); 
      Page.FindControl("form1").Controls.Add(myFieldSet); 



     } 
     public void btnAddcategorieslanguage_Click(object sender, EventArgs e) 
     { 

      TextBox txbTitle = (TextBox)FindControl("txbTitle"); 
      TextBox txbShrtDescrpt = (TextBox)FindControl("txbShrtDescrpt"); 
      TextBox txbDescrpt = (TextBox)FindControl("txbDescrpt"); 



      this.catRep.AddCategoriesLanguages(11, 2, "malee", "tariiiiii", "liliiii"); 

     } 

ответ

1

Необходимо также создать все динамически добавленные элементы управления в событии инициализации страницы или загрузки страницы. Что-то вроде этого:

protected void Page_Load(object sender, EventArgs e) 
     { 
    if(ThereIsDynamicControl()) 
    { 
    //You can set some session or viewState in the btnAddNew_Click to determine whether you need to add dynamic controls again here or not. 
    } 
     if (!IsPostBack) 
      { 
       ddlLanguages.DataSource = this.catRep.GetAllAvailableLanguages(); 
       ddlLanguages.DataBind(); 
      } 
    //IEnumerable<CatgoriesLanguages> allcategories = this.catRep.GetAllCategoriesByID(1); 
      } 
+0

Так я на самом деле воссоздать элементы управления, которые я создаю в BtnAddNew –

+0

Yes.You нужно сделать это. – Alborz

+0

Спасибо, что он сработал после воссоздания динамических элементов управления. –

Смежные вопросы