2015-03-06 5 views
0

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

Я не очень хорошо с UpdatePanel я не знаю, если они правильны:

Это мой HTML код:

<asp:UpdatePanel ID="UpdatePanel5" runat="server" UpdateMode="Conditional"> 
    <ContentTemplate> 
      <asp:Table ID="TableEmail" runat="server" BorderColor="Black" BorderWidth="1"> 
       <asp:TableRow ID="EmailRow1" runat="server" BorderColor="Black" BorderWidth="1"> 
        <asp:TableCell BorderColor="Black" BorderWidth="1"></asp:TableCell> 
        <asp:TableCell BorderColor="Black" BorderWidth="1">Informations Concessionnaire</asp:TableCell> 
        <asp:TableCell BorderColor="Black" BorderWidth="1">Contacts</asp:TableCell> 
        <asp:TableCell BorderColor="Black" BorderWidth="1">Objectifs</asp:TableCell> 
        <asp:TableCell BorderColor="Black" BorderWidth="1">Retour</asp:TableCell> 
        <asp:TableCell BorderColor="Black" BorderWidth="1">Stock</asp:TableCell> 
        <asp:TableCell BorderColor="Black" BorderWidth="1">SAV/QUA</asp:TableCell> 
        <asp:TableCell BorderColor="Black" BorderWidth="1">Cliquette</asp:TableCell> 
        <asp:TableCell BorderColor="Black" BorderWidth="1">Paiement</asp:TableCell> 
        <asp:TableCell BorderColor="Black" BorderWidth="1">Concurrence</asp:TableCell> 
        <asp:TableCell BorderColor="Black" BorderWidth="1">Photos</asp:TableCell> 
       </asp:TableRow> 
      </asp:Table> 
    </ContentTemplate> 
</asp:UpdatePanel> 

<asp:UpdatePanel ID="UpdatePanel4" runat="server" UpdateMode="Conditional"> 
    <ContentTemplate> 
     <asp:Button ID="BtnAddEmail" runat="server" CssClass="boutons" Text="+ Ajouter un destinataire" OnClick="BtnAddEmail_Click" /> 
    </ContentTemplate> 
    <Triggers> 
     <asp:PostBackTrigger ControlID="BtnAddEmail" /> 
    </Triggers> 
</asp:UpdatePanel> 

И мой C# код:

public void BtnAddEmail_Click(object sender, EventArgs e) 
    { 
     //Instanciation des composants 
     TextBox TxtEmail = new TextBox(); 
     Label LblEmail = new Label(); 
     CheckBox ChkBox1 = new CheckBox(); 
     CheckBox ChkBox2 = new CheckBox(); 
     CheckBox ChkBox3 = new CheckBox(); 
     CheckBox ChkBox4 = new CheckBox(); 
     CheckBox ChkBox5 = new CheckBox(); 
     CheckBox ChkBox6 = new CheckBox(); 
     CheckBox ChkBox7 = new CheckBox(); 
     CheckBox ChkBox8 = new CheckBox(); 
     CheckBox ChkBox9 = new CheckBox(); 
     CheckBox ChkBox10 = new CheckBox(); 

     //Configuration des composants 
     LblEmail.Text = "@rapido.fr"; 
     TxtEmail.ID = "TxtEmail1"; 
     ChkBox1.ID = "ChkBox1"; 
     ChkBox2.ID = "ChkBox2"; 
     ChkBox3.ID = "ChkBox3"; 
     ChkBox4.ID = "ChkBox4"; 
     ChkBox5.ID = "ChkBox5"; 
     ChkBox6.ID = "ChkBox6"; 
     ChkBox7.ID = "ChkBox7"; 
     ChkBox8.ID = "ChkBox8"; 
     ChkBox9.ID = "ChkBox9"; 
     ChkBox10.ID = "ChkBox10"; 

     //Instanciation des cellules 
     TableCell Cell1 = new TableCell(); 
     TableCell Cell2 = new TableCell(); 
     TableCell Cell3 = new TableCell(); 
     TableCell Cell4 = new TableCell(); 
     TableCell Cell5 = new TableCell(); 
     TableCell Cell6 = new TableCell(); 
     TableCell Cell7 = new TableCell(); 
     TableCell Cell8 = new TableCell(); 
     TableCell Cell9 = new TableCell(); 
     TableCell Cell10 = new TableCell(); 
     TableCell Cell11 = new TableCell(); 

     //Configuration des cellules 
     Cell1.Controls.Add(TxtEmail); 
     Cell1.Controls.Add(LblEmail); 
     Cell2.Controls.Add(ChkBox1); 
     Cell3.Controls.Add(ChkBox2); 
     Cell4.Controls.Add(ChkBox3); 
     Cell5.Controls.Add(ChkBox4); 
     Cell6.Controls.Add(ChkBox5); 
     Cell7.Controls.Add(ChkBox6); 
     Cell8.Controls.Add(ChkBox7); 
     Cell9.Controls.Add(ChkBox8); 
     Cell10.Controls.Add(ChkBox9); 
     Cell11.Controls.Add(ChkBox10); 

     //Instanciation de la ligne 
     TableRow Row1 = new TableRow(); 

     Row1.Cells.Add(Cell1); 
     Row1.Cells.Add(Cell2); 
     Row1.Cells.Add(Cell3); 
     Row1.Cells.Add(Cell4); 
     Row1.Cells.Add(Cell5); 
     Row1.Cells.Add(Cell6); 
     Row1.Cells.Add(Cell7); 
     Row1.Cells.Add(Cell8); 
     Row1.Cells.Add(Cell9); 
     Row1.Cells.Add(Cell10); 
     Row1.Cells.Add(Cell11); 

     //TableEmail.Rows.AddAt(TableEmail.Rows.Count - 1, Row1); 
     TableEmail.Rows.Add(Row1); 
    } 
+1

Можете ли вы также показать код, который добавляет строки в таблицу? – Andrei

+0

Да, конечно, я отредактировал мое сообщение. – Phobie

ответ

0

Кажется, вы не можете этого сделать.

От MSDN:

Важно помнить, что любые программные дополнения или изменения строк таблицы или ячейки не будут сохраняться через сообщения на сервер. Это связано с тем, что строки и ячейки таблицы являются элементами управления, а не свойствами элемента управления таблицей. Чтобы сохранить любые изменения в таблице, строки и ячейки должны быть восстановлены после каждой обратной передачи. На самом деле, если ожидаются существенные изменения, рекомендуется использовать элемент управления DataList, DataGrid или GridView вместо элемента управления таблицей. В результате класс Table в основном используется разработчиками управления.

Дополнительная информация here.

+0

Хорошо, спасибо, поэтому я попробую с GridView. – Phobie

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