我动态创建了一个下拉列表。我需要动态添加onchange
事件并进行回发,以便进行数据库调用。当我更改下拉列表项时,我收到错误:
ReferenceError:未定义UpdateLocationList。
这是我的javascript代码:
<head runat="server">
<title>Locations</title>
<meta http-equiv="Content-Language" content="en-us"/>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252"/>
<script src = "scripts/jquery-1.11.2.min.js" type = "text/javascript"></script>
<script type="text/javascript">
function UpdateLocationList(obj) {
alert('In function');
var facilityValue = document.getElementById("FacilityTypeDDL").value;
alert(facilityValue);
__doPostBack('FacilityTypeDDL', facilityValue);
}
</script>
</head>
<body>
<%ListLocations()%>
</body>
这是后面代码中的ListLocations()方法:
Public Sub ListLocations()
Response.Write("<div style='text-align:left;'>")
Response.Write("<label>Facility Type:<select id='FacilityTypeDDL' name='FacilityTypeDDL' size='1' runat='server' onchange='UpdateLocationList(this)'>")
For Each facility As ListItem In lstBoxFacilityTypes
'Get the first value in the list and use the ID to to the list of locations below
If String.Compare(facilityValueSelected, "") = 0 Then
facilityValueSelected = facility.Value
End If
Response.Write("<option value=''" & facility.Value & "''>" & facility.Text & "</option>")
Next
Response.Write("</select></label>")
Response.Write("</div>")
Response.Write("<hr>")
End Sub
缺少什么会导致函数UpdateLocationList未定义的错误?
更新 我将下拉列表作为asp:DropDownList:
直接添加到aspx页面 <body>
<form id="form1" runat="server">
<div style='text-align:center;'>
<a style='text-decoration:none;font-size:16px;color:blue;background-color:white;width:200px;padding:4px;' href='LocationDetails.aspx?Location_ID=0' target='detailPanel'> Add Location
</a></div>
  
<asp:Label ID="FacilityTypeLbl" runat="server">Facility Type:</asp:Label>
<asp:DropDownList ID="FacilityTypeDDL" runat="server" AutoPostBack="true" OnSelectedIndexChanged=" FacilityTypeDDL_SelectedIndexChanged">
</asp:DropDownList>
<hr/>
<%ListLocations()%>
</form>
</body>
将OnSelectedChanged事件添加到后面的代码中:
Protected Sub FacilityTypeDDL_SelectedIndexChanged(sender As Object, e As System.EventArgs) Handles FacilityTypeDDL.SelectedIndexChanged
strFacilityValue = FacilityTypeDDL.SelectedValue
ListLocations()
End Sub
我在这个方法中放了一个断点,它并没有停在它里面。 为什么我的事件没有解雇?
答案 0 :(得分:1)
在onchange中,你应该只给出函数的名称;你不应该添加函数调用。
您可以更好地将以下内容添加到yopur脚本代码中,而不是在HTML代码中附加事件处理程序:
$(document).ready(function() {
$("#FacilityTypeDDL").change(UpdateLocationList);
});
另外,
function UpdateLocationList(obj)
你可以省略论证:你不使用它(如果你使用它,它代表事件)。
答案 1 :(得分:0)
我无法获取asp:DropdownList来触发SelectedIndexChanged事件。所以这就是我完成任务的方式。
如上所示动态添加下拉列表并添加调用javascript的更改事件:
onchange='UpdateLocationList()'
此函数必须放在.js文件中。这个网站已有一个.js文件。它还有一些我用来完成任务的AJAX调用。 在UpdateLocationList()中,我获取在下拉列表中设置为值属性的服务类型的ID。然后,我使用服务类型ID将已经是.js文件的一部分的函数用于LocationDetails页面,以仅显示该服务类型的工具。这是功能:
function updateLocationList() {
var ddlFacilityType = document.getElementById("FacilityTypeDDL");
var facilityValue = ddlFacilityType.options[ddlFacilityType.selectedIndex].value;
processAjax("/editor/Locations.aspx?Location_ID=" + facilityValue, "navPanel");
}
像魅力一样工作。
感谢您的所有帮助。