如何用JavaScript将经典ASP页面值设置到ASP.NET DropDownList选中项
问题解决:用JavaScript设置ASP.NET DropDownList选中项
核心问题分析
你当前的代码有两个关键问题导致设置失败:
- ASP.NET服务器端控件
DropDownList渲染到客户端后,ID会自动生成前缀(比如ctl00_ContentPlaceHolder1_ddlCountry),直接用document.getElementById("ddlCountry")找不到控件。 - 你试图用前页的
CountryName(下拉框的显示文本)去设置DropDownList的value属性,但DropDownList的value绑定的是CountryID,文本和ID不匹配,自然选不到对应项。
修正后的代码
前台.aspx页面代码
<script> function loadpreviouspagevalues() { // 获取正确的客户端控件ID var ddlCountry = document.getElementById('<%= ddlCountry.ClientID %>'); // 获取前页的CountryName值 var targetCountryName = window.opener.parent.document.getElementById("CountryName").value; // 遍历下拉框选项,找到文本匹配的项并设置选中 for(var i = 0; i < ddlCountry.options.length; i++){ if(ddlCountry.options[i].text === targetCountryName){ ddlCountry.selectedIndex = i; break; } } } </script> <body onload="loadpreviouspagevalues()"> <asp:DropDownList ID="ddlCountry" runat="server"></asp:DropDownList> <!-- 其他页面元素 --> </body>
补充优化方案
如果你的前页能直接获取到CountryID(而不是CountryName),可以简化代码直接设置value,不用遍历选项:
function loadpreviouspagevalues() { var ddlCountry = document.getElementById('<%= ddlCountry.ClientID %>'); ddlCountry.value = window.opener.parent.document.getElementById("CountryID").value; }
内容的提问来源于stack exchange,提问作者Shivam
相关产品推荐
相关产品推荐

