2016-07-18 20 views
0

BoundFieldを条件付きで更新するWebForms GridViewがあります(または、DropDownの値を使用するか、テキストボックスのテキストを使用します)。ドロップダウンリスト。GridView内のEditItemTemplateからIDを取得する方法

<asp:GridView ID="gv_results" runat="server" DataKeyNames="ID_RESULTS" DataSourceID="get_results"> 
      <Columns> 
       <asp:TemplateField HeaderText="DETAIL" SortExpression="DETAIL"> 
        <EditItemTemplate> 
         <asp:TextBox ID="tb_detail_edit" runat="server"></asp:TextBox> 
         <asp:DropDownList ID="dd_detail_edit" runat="server" AutoPostBack="True" DataSourceID="get_detail" DataTextField="DETAIL" DataValueField="DETAIL" ></asp:DropDownList> 
         </asp:SqlDataSource> 
        </EditItemTemplate> 
        <ItemTemplate> 

     <asp:SqlDataSource runat="server" ID="get_results" 
      UpdateCommand="UPDATE RESULTS SET [DETAIL] = COALESCE(@DETAIL,@DETAILwelcome)"> 
      <UpdateParameters> 
       <asp:ControlParameter ControlID="ctl00$MainContent$gv_results$ctl02$dd_detail_edit" PropertyName="SelectedValue" Name="DETAIL" Type="String"></asp:ControlParameter> 
       <asp:ControlParameter ControlID="ctl00$MainContent$gv_results$ctl02$tb_detail_edit" PropertyName="Text" Name="DETAILwelcome" Type="String"></asp:ControlParameter> 
      </UpdateParameters> 
     </asp:SqlDataSource> 

はまあ、私はGoogleの私は、制御パラメータに直接IDを使用する必要があることで分かりました。それは動作します...事は、dd_detail_editのidの前の$ ctl02(例えば)が変更され、Gridview内の別の行で変更されます(このIDは1行で動作しますが、仕事

このため、いくつかの回避策は$ gv_results $ dd_detail_editのような唯一のものを使用して

は、動作しません、私はなぜ知らないあります:。のためにS

TIAとよろしく、

+0

GridViewRow.FindControl()メソッドを使用します。 MSDNのdefは次のとおりです。https://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridviewrow.findcontrol(v=vs.110).aspxそして可能な解決策は次のとおりです。http:///stackoverflow.com/questions/6873973/how-to-find-control-in-templatefield-of-gridview – Kami

+0

まあ、私はそれを得たと思う: 詳細:方法gv_resultados_RowUpdatingで を、私は行をコントロール検索を使用します=((TextBox)gv_results.Rows [e.RowIndex] .FindControl( "tb_detail_edit")).Text.Trim(); または (DropDownList)gv_results.Rows [e.RowIndex] .FindControl( "dd_detail_edit")。SelectedValue; Thkx;) – chimino

答えて

0

を?あなたが開いた<ItemTemplate>タグを持っているように見えます。

.net documentationをチェックアウトすると、ControlID = dd_detail_editのような通常の制御IDがどこで使用されているかがわかります。

完全な回答を提供するのに十分な詳細を提供しているとは思いませんが、それは私が気付いたことです。

+0

こんにちは、ペヨーテは、はい()のみが重要表示するには、オープンタグ私は多くのコードをcuttedので、それはタイプミスだあります:P はい、コントロールの動作から通常のidしかし、例えばEditItemTemplates内のこれらのコントロールは機能しません。:\ – chimino

関連する問題