1

我需要将下拉列表“dropCallbackReason”的“文本字符串”声明为“ValueHiddenField”的 ID,<Asp:HiddenField>以便我可以将其用作 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>
4

1 回答 1

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>
于 2013-06-07T17:02:17.207 回答