2009-07-07 9 views
1

これまでにテキストのみで投稿してみました...私はonblurを更新する提案が1つしかありませんでした。最高のルートのようには見えませんでした。かなりの量のレコードがある可能性があります。 「>これは分離コードである
リピータにネストされたグリッドビュー内のテキストボックスからデータを取得するにはどうすればよいですか?

  <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> 

:リピータItemDataBoundイベント中 保護ボイドrptPlanTypes_ItemDataBound(オブジェクト送信者、RepeaterItemEventArgs E) {GridViewのgvBeneficiary =(GridViewの)e.Item.FindControl ( "gv受取人");

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

     gvBeneficiary.DataBind(); 
    } 

私はすべての更新をしたいボタンから1つのonclickイベントを持っています。誰でも、行の個々のコントロールをドリルダウンして、すべてのデータを一度に、またはループで取り出す方法を知っています。 あなたの提案に感謝します。 Padawan

+0

Beuller、Beuller –

答えて

0

GridViewの各行を繰り返し処理し、関心のある各コントロールからデータを収集することをお勧めします。たとえば、次のスニペットは行ごとに各txtEditShares値を取得します。

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

あなたが一緒にループの根性を配置する必要がありますが、それはGridViewのそれぞれの行を移動すると、制御値をつかむ方法です。私はそれが助けて欲しい

関連する問題