我有一个下拉列表,其中列出了哪些国家/地区。在选择OnSelectedIndexChanged
事件期间,国家/地区代码(如+91)将显示在文本框中。下拉列表应位于<asp:Update panel>
标记中,更新面板工作正常。 OnSelectedIndexChanged
事件也在后面的代码中工作。但问题是文本框中没有显示国家/地区代码值。
这是我的代码..
<asp:UpdatePanel runat="server">
<ContentTemplate>
<asp:DropDownList
runat="server"
ID="ddl_country"
AutoPostBack="true"
OnSelectedIndexChanged="ddl_country_SelectedIndexChanged">
</asp:DropDownList>
<asp:RequiredFieldValidator
ControlToValidate="ddl_country"
ID="reqCountry"
ValidationGroup="req"
class="validation-msg"
ErrorMessage="Please select a country"
InitialValue="0"
runat="server"
Display="Dynamic">
</asp:RequiredFieldValidator>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger
ControlID="ddl_country"
EventName="ddl_country_SelectedIndexChanged" />
</Triggers>
</asp:UpdatePanel>
<asp:TextBox runat="server" ID="text_countrycode"/>
答案 0 :(得分:0)
text_countrycode位于上述代码中的任何更新面板之外。所以它在表单中,整个表单需要回发以便更改它的文本。
您可能正在使用Updatepanel,因为您不希望整个表单闪现并回发。
更改下拉列表并不会刷新整个页面,因为它位于更新面板中。如果您希望在没有整页回发的情况下更新文本框,请将其放在自己的更新面板中并从第一个触发它。
甚至更容易,只需将它们放在同一个中。
答案 1 :(得分:0)
在<ContentTemplate>
。
试试这段代码:
<asp:UpdatePanel runat="server">
<ContentTemplate>
<asp:DropDownList runat="server" ID="ddl_country" AutoPostBack="true"
OnSelectedIndexChanged="ddl_country_SelectedIndexChanged"></asp:DropDownList>
<asp:RequiredFieldValidator ControlToValidate="ddl_country" ID="reqCountry"
ValidationGroup="req" class="validation-msg" ErrorMessage="Please select a country"
InitialValue="0" runat="server" Display="Dynamic">
</asp:RequiredFieldValidator>
<asp:TextBox runat="server" ID="text_countrycode"/>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="ddl_country" EventName="ddl_country_SelectedIndexChanged" />
</Triggers>
</asp:UpdatePanel>