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とよろしく、
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
まあ、私はそれを得たと思う: 詳細:方法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