将选定的dropDownList文本声明为隐藏字段,因此可以与JS一起使用

时间:2013-06-07 16:29:14

标签: c# javascript asp.net drop-down-menu hiddenfield

我需要将下拉列表'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>

1 个答案:

答案 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>