2009-07-07 6 views
1

J'ai essayé de poster ceci avant avec seulement le texte ... il y avait seulement une réponse que j'ai mise à jour onblur ... qui n'a pas semblé la meilleure route car il pourrait y avoir une quantité considérable d'enregistrements: au cours d'un événement répéteur ItemDataBound: « >
Comment puis-je obtenir les données à partir des zones de texte dans la grille, imbriquées dans le répéteur?

  <asp:GridView ID="gvBeneficiary" DataKeyNames="BeneficiaryKey" OnRowCommand="gvBeneficiary_RowCommand" runat="server" AutoGenerateColumns="false"> 
      <Columns> 


       <asp:TemplateField HeaderText="Name"> 
       <ItemTemplate> 
       <asp:HyperLink runat = "server" ID="hlEditBeneficiary" NavigateUrl='<%# "~/EditBeneficiary.aspx?bk=" + HttpUtility.UrlEncode(DataBinder.Eval(Container.DataItem, "BeneficiaryKey").ToString()) %>' Text='<%#Eval("FirstName") %>'></asp:HyperLink> 
       </ItemTemplate> 


       </asp:TemplateField> 

       <asp:BoundField DataField="Relationship" HeaderText="Relationship" /> 
       <asp:TemplateField HeaderText="Shares %"> 

        <ItemTemplate> 
         <asp:TextBox ID="txtEditShares" runat="server" Text='<%#Bind("Shares") %>'></asp:TextBox> 
        </ItemTemplate> 
       </asp:TemplateField> 

       <asp:TemplateField HeaderText="Beneficiary Type"> 

       <ItemTemplate> 
        <asp:DropDownList ID="ddlBeneficiaryType" runat="server" SelectedIndex='<%# GetSelectedBeneficiaryType(Eval("BeneficiaryType")) %>' DataSource='<%# BeneficiaryTypes %>' ></asp:DropDownList> 

       </ItemTemplate> 
       </asp:TemplateField> 
       <asp:TemplateField> 
       <ItemTemplate> 
       <asp:LinkButton Text="Delete" CommandName='DoDelete' CommandArgument='<%# string.Format("{0}|{1}", Eval("BeneficiaryKey"), Eval("PlanTypeKey")) %>' ID="lbDoDelete" runat="server"></asp:LinkButton> 
       </ItemTemplate> 

       </asp:TemplateField>   




      </Columns> 

      </asp:GridView> 
      <asp:HyperLink ID="hlAddBeneficiary" runat="server" Text="Add Beneficiary" NavigateUrl='<%# "~/AddEditBeneficiary.aspx?PT=" + HttpUtility.UrlEncode(DataBinder.Eval(Container.DataItem, "PlanTypeKey").ToString()) + "&CPT=" + HttpUtility.UrlEncode(DataBinder.Eval(Container.DataItem, "CorePlanType").ToString()) %>'></asp:HyperLink> 

Ceci est la codebehind: rptPlanTypes_ItemDataBound vide protégé (expéditeur d'objet, RepeaterItemEventArgs e) { GridView gvBeneficiary = (GridView) e.Item.FindControl ("gvBeneficiary");

 gvBeneficiary.DataSource = ((PlanType) e.Item.DataItem).BeneficiaryCollection; 

     gvBeneficiary.DataBind(); 
    } 

J'ai un événement onclick à partir d'un bouton dont je veux faire toutes les mises à jour. N'importe qui a une idée de la façon d'explorer les contrôles individuels sur les lignes pour tirer toutes les données à la fois ou dans une boucle. Merci encore pour toutes vos suggestions. Padawan

+0

Beuller, Beuller –

Répondre

0

Vous voudrez parcourir chaque ligne de GridView et collecter les données de chaque contrôle qui vous intéresse. Par exemple, l'extrait suivant récupère chaque valeur txtEditShares par ligne.

foreach (GridViewRow row in gvBeneficiary.Rows) 
{ 
    var txtEditShares = (TextBox)row.FindControl("txtEditShares"); 
    var shares = txtEditShares.Text; 
    ///... 
} 

Vous aurez besoin de mettre en place le courage de la boucle, mais c'est comment passer à travers chaque ligne d'un GridView et de saisir des valeurs de contrôle. J'espère que ça aide.

Questions connexes