我有一个WebForms GridView,我想根据另一个DropDownList中的值,有条件地更新BoundField(或者我使用DropDown中的值或使用Textbox中的文本)。
<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中发现我必须在控制参数中使用Direct ID。它的工作原理是......在dd_detail_edit的id之前的$ ctl02(例如)在Gridview中使用不同的行进行更改(因此这个id适用于一行,但也许对于下一行它不会工作
是否有一些解决方法?
只使用$ gv_results $ dd_detail_edit这样的东西不行,我不知道为什么:S
TIA和最诚挚的问候,
答案 0 :(得分:0)
首先,看起来你有一个开放的<ItemTemplate>
标签而没有任何关闭标签。
如果您查看.net documentation,则可以看到他们使用常规控件ID的位置,例如ControlID = dd_detail_edit
。
我认为你没有提供足够的细节来提供完整的答案,但这些是我注意到的一些事情。