2013-01-03 10 views
1

Je sais que Repeater Control est utilisé pour afficher dynamiquement les données d'un data source sur une page Web.
Cependant, je veux utiliser le contrôle de répéteur pour prendre l'entrée de l'utilisateur et générer de nouveaux champs d'entrée à la demande de l'utilisateur. Quelqu'un pourrait-il m'aider comment ajouter un nouvel élément de répéteur à travers le code derrière.
J'ai un répéteur suivant:Ajout d'un élément d'un répéteur par programme dans asp.net

<asp:Repeater ID="RepeaterDetailsRow" runat="server"> 
      <HeaderTemplate> 
      <div class="divSection"> 
      <div class="divFieldContent" style="width:auto;"> 
       <asp:CheckBox ID="CheckBoxDetails" runat="server" AutoPostBack="True" 
        oncheckedchanged="CheckBoxDetails_CheckedChanged" /> 
      </div> 
      <div class="divFieldContent"> 
       <asp:Label ID="lblDetails" runat="server" Text="Enter Details" 
        ForeColor="Coral" Font-Bold="True" Enabled="False"></asp:Label> 
      </div> 
       <asp:Button ID="AddNewRow" runat="server" Text="Button" /> 
      </div> 
      </HeaderTemplate> 
      <ItemTemplate> 
      <div class="divSectionContent"> 
      <div class="divFieldContent"> 
       <asp:Label ID="lblName" runat="server" 
        Text="Name"></asp:Label> 
      </div> 
      <div class="divFieldContent"> 
       <div> 
       <asp:TextBox ID="txtName" CssClass="boxes"runat="server">     </asp:TextBox>    
       </div> 
       </div>      
      </div>    
      <div class="divSectionContent"> 
      <div class="divFieldContent"> 
       <asp:Label ID="lblSubject" runat="server" 
        Text="Subject" Enabled="False"></asp:Label> 
      </div> 
      <div class="divFieldContent"> 
       <div> 
        <asp:DropDownList ID="ddl_RejectReasonCode" CssClass="boxes" 
        runat="server"> 
        <asp:ListItem>Select Subject</asp:ListItem> 
      <asp:ListItem>Subject1</asp:ListItem> 
      <asp:ListItem>Subject2</asp:ListItem> 
      <asp:ListItem>Subject3</asp:ListItem>  
        </asp:DropDownList> 
       </div> 
           </div> 
      </div> 
      </ItemTemplate> 
     </asp:Repeater> 

Je veux ajouter des lignes correspondant à modèle d'élément de répéteur sur la propriété de commande d'objet de bouton dans le modèle d'en-tête du répéteur.

+1

est un lien ici qui peut vous aider à http://xaeryan.blogspot.in/2009/09/dynamically-adding-removing-textboxes.html ou même cette http : //stackoverflow.com/questions/5666031/insert-textboxes-into-a-repeater-dynamically-and-retrieve-their-value –

+0

Cela a déjà répondu ici: http://stackoverflow.com/questions/8694773/asp-net-create-repeater-programatically –

Répondre

0

Vous devez essentiellement relier la liste et ajouter un élément vide. C'est la façon habituelle de faire les choses avec des contrôles liés aux données. Vous ne pouvez pas ajouter dynamiquement un élément au répéteur dont je suis au courant.

2

Dans la page ASPX

vous devez inclure

OnItemCommand = "RepeaterDetailsRow_ItemCommand" dans la balise répéteur qui ressemblerait

<asp:Repeater ID="RepeaterDetailsRow" runat="server" OnItemCommand="RepeaterDetailsRow_ItemCommand"> 

et CommandName au bouton AddNewRow

<asp:Button ID="AddNewRow" runat="server" Text="Button" CommandName="Add"/> 

Dans CodeBehind

protected void RepeaterDetailsRow_ItemCommand(object source, RepeaterCommandEventArgs e) 
{ 
    if (e.CommandName == "Add") 
    { 
     //save the data to the database 
     LoadData(); //again rebind the repeater with data from db 
    }  
} 
0

Mon exigence était de montrer la ligne d'ajouter à l'intérieur de répéteur. Moi inclus une rangée vide comme le dernier élément en faisant une petite vérification, dans toutes les autres lignes, rangée vide cachée.

Utilisé <%# (((IList)((Repeater)Container.Parent).DataSource).Count).ToString() == (Container.ItemIndex + 1).ToString() %> vérification pour décider d'afficher ou de cacher ligne vide.

complet Code de vue:

<table> 
    <asp:Repeater ID="repeater1" OnItemCommand="repeater_user_Itemcommand" runat="server"> 
     <HeaderTemplate> 
      <tr> 
       <td> 
        Name 
       </td> 
       <td> 
        Email 
       </td> 
       <td> 
        Delete 
       </td> 
      </tr> 
     </HeaderTemplate> 
     <ItemTemplate> 
      <tr> 
       <td> 
        <asp:Label ID="lblName" runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"Name") %>'></asp:Label> 
       </td> 
       <td> 
        <asp:Label ID="lblEmail" runat="server" Text='<%# Eval("Email") %>'></asp:Label> 
       </td> 
       <td> 
        <asp:LinkButton ID="btnDelete" runat="server" CommandArgument='<%# Eval("ID") %>' 
         CommandName="delete">Delete</asp:LinkButton> 
       </td> 
      </tr> 
      <tr id="Tr1" runat="server" visible='<%# (((IList)((Repeater)Container.Parent).DataSource).Count).ToString() == (Container.ItemIndex + 1).ToString() %>'> 
       <td> 
        <asp:TextBox ID="txtName_add" runat="server" Enabled="True" Text='' Visible="false"></asp:TextBox> 
       </td> 
       <td> 
        <asp:TextBox ID="txtEmail_add" runat="server" Text='' Visible="false"></asp:TextBox> 
       </td> 
       <td> 
        <asp:LinkButton ID="btnShowAdd" runat="server" CommandName="add">Add</asp:LinkButton> 
       </td> 
      </tr> 
     </ItemTemplate> 
    </asp:Repeater> 
</table>