我需要将下拉列表'dropCallbackReason'的'text string'声明为<Asp:HiddenField>
的'ValueHiddenField'ID,以便我可以将其用作javascript变量。
问题是上面的另一个下拉列表有一个AutoPostBack,它清除了javascript变量,所以我知道它需要通过后端来实现页面加载声明。我知道我很亲密,但有人有任何想法吗?
<asp:DropDownList AutoPostBack="true" OnSelectedIndexChanged="dropVehicleRequest_Changed" runat="server" ID="dropVehicleRequest"></asp:DropDownList>
<asp:DropDownList runat="server" ID="dropCallbackReason" SelectedIndexChanged="riskSeverityDropDown_SelectedIndexChanged" onChange="javascript:updateCallBackReason()" ClientIDMode="Static" >
<asp:ListItem Text="-- Select Reason --" Value="1"></asp:ListItem>
<asp:ListItem Text="Booking" Value="2"></asp:ListItem>
<asp:ListItem Text="Discussing" Value="3"></asp:ListItem>
<asp:ListItem Text="Contact" Value="4"></asp:ListItem>
</asp:DropDownList>
<asp:hiddenfield id="ValueHiddenField" value="test" runat="server"/>
<script type="text/javascript">
function updateCallBackReason() {
callBackReason = document.getElementById('<%=ValueHiddenField.ClientID %>').value;
return callBackReason;
}
</script>
答案 0 :(得分:0)
预计JS变量将通过回发重置,因为您要向客户端发送要呈现的页面的新版本。由于ASP.NET在跟踪控件状态方面做得很好,您是否可以更改JS以获取当前选定的DDL值而不是通过服务器发送?例如。
之类的东西<asp:DropDownList AutoPostBack="true" OnSelectedIndexChanged="dropVehicleRequest_Changed" runat="server" ID="dropVehicleRequest"></asp:DropDownList>
<asp:DropDownList runat="server" ID="dropCallbackReason" SelectedIndexChanged="riskSeverityDropDown_SelectedIndexChanged" onChange="javascript:updateCallBackReason()" ClientIDMode="Static" >
<asp:ListItem Text="-- Select Reason --" Value="1"></asp:ListItem>
<asp:ListItem Text="Booking" Value="2"></asp:ListItem>
<asp:ListItem Text="Discussing" Value="3"></asp:ListItem>
<asp:ListItem Text="Contact" Value="4"></asp:ListItem>
</asp:DropDownList>
<script type="text/javascript">
function updateCallBackReason() {
var ddlReason = document.getElementById("<%=dropCallbackReason.ClientID%>");
callBackReason = ddlReport.options[ddlReason.selectedIndex].text;
return callBackReason;
}
</script>