2017-09-20 2 views
0

にボタンのクリックでテキストボックスの値を取得する方法を私は子供のGridViewのからテキストボックスの値を取得することができませんネストされたGridViewの中ボタンクリックでテキストボックスの値を取得するにはどのようにネストされたGridViewの

<asp:GridView ID="GridView2" runat="server"> 

        <Columns> 
         <asp:TemplateField> 
          <ItemTemplate> 

            <asp:ImageButton ID="ImageButton1" runat="server" OnClick="Show_Hide_ChildGrid" ImageUrl="~/images/plus.png" CommandArgument="Show" Height="20" Width="20" /> 

           <asp:Panel ID="pnlOrders" runat="server" Style="display: none;"> 

            <asp:GridView ID="gvOrders" runat="server" OnRowCommand="gvOrders_RowCommand"> 
             <Columns> 


              <asp:TemplateField HeaderText="volNo"> 
               <ItemTemplate> 
                <asp:TextBox Width="90px" ID="txtVolume" runat="server" Text='<%#DataBinder.Eval(Container.DataItem,"Volume") %>'></asp:TextBox> 
               </ItemTemplate> 
               <HeaderStyle Width="91px" /> 
              </asp:TemplateField> 

              <asp:ButtonField ButtonType="Button" CommandName="Save" Text="Save" HeaderText="Save"> 
               <HeaderStyle Width="50px" /> 
              </asp:ButtonField> 

             </Columns> 


            </asp:GridView> 

           </asp:Panel> 
          </ItemTemplate> 
         </asp:TemplateField> 
         <asp:BoundField DataField="JournalName" HeaderText="JournalName" ></asp:BoundField> 

        </Columns> 

       </asp:GridView> 

。 これは、この(gridview id)が現在のコンテキストに存在しないというエラーを示します。 親グリッドビューでは正常に動作しています。私が親グリッドビュー を試してみたところ、そのコードが正しいことが分かりました。私のやり方。それが悪いかもしれません ですのでご確認ください。 desing partと.cs partの両方が掲載されています。 RowCommandイベントで

<asp:TemplateField HeaderText="Save"> 
    <ItemTemplate> 
     <asp:Button ID="btnSave" CommandName="Save" runat="server" Text="Save" /> 
    </ItemTemplate> 
</asp:TemplateField> 

はそれを試してください:私はエラー

protected void gvOrders_RowCommand(object sender, GridViewCommandEventArgs e) 
    { 



     if (e.CommandName == "Save") 
     { 
       int rowIndex = Convert.ToInt32(e.CommandArgument); 
       **GridViewRow row = gvOrders.Rows[rowIndex];** // Here i am getting error that gvOrders does not exit in the current context 

       //GridView GVCollapse = (GridView)sender; //find nested grid view 
       //GridViewRow row = (GridViewRow)GVCollapse.Parent.Parent; 

       //Fetch value of Name. 
       string Journal = (row.FindControl("txtJournalName") as TextBox).Text; 
       string Volume = (row.FindControl("txtVolume") as TextBox).Text; 
       string Issues = (row.FindControl("txtIssues") as TextBox).Text; 
       string DispatchDate = (row1.FindControl("txtDispatchDate") as TextBox).Text; 
       string Remarks = (row.FindControl("txtRemarks") as TextBox).Text; 



       ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert('Name: " + Journal + "\\nCountry: " + Volume + "\\nDate: " + DispatchDate + "');", true); 



     } 
    } 

答えて

0

はボタンでButtonFieldを交換して取得していますどこで、私も言及

if (e.CommandName == "Save") 
{ 
    GridViewRow row = (GridViewRow)(((Button)e.CommandSource).NamingContainer); 
    GridView gv = (GridView)row.FindControl("gvOrders"); 

    string Journal = (row.FindControl("txtJournalName") as TextBox).Text; 
    //... some other code 
}  
+0

すごい...そうそんなにありがとう。..その作業.. –

+0

実際に私はまた、Ajaxカレンダーは、子グリッドビューのテキストボックスで動作するかどうかを知りたいですか? becoz私は問題を抱えています。 –

+0

はいそれはうまくいくでしょうし、その問題について別の質問を投稿することができます。 – AsifAli72090

関連する問題