一个页面中有一个dropdownlist
和一个。当用户选择国家澳大利亚时,需要显示一个 ImageButton(一个标志图像),单击它会将用户带到其各自的网站。其他网站是内部托管的,因此无需显示图像按钮。ImageButton
.aspx
为下拉列表定义了客户端和服务器端事件。
问题是这个下拉列表的服务器端事件:OnSelectedIndexChanged="ddlSortBy_SelectedIndexChanged"
没有被调用。什么地方出了错 ?
此外,正如在删除客户端事件时观察到的那样,服务器端事件被调用。为什么这样 ?
<asp:DropDownList ID="ddlCountries" runat="server"
AutoPostBack="true" onchange="return ddlCountriesSelected();"
OnSelectedIndexChanged="ddlCountries_IndexChanged">
<asp:ListItem Text="_Select_" Selected="True"></asp:ListItem>
<asp:ListItem Text="Australia"></asp:ListItem>
<asp:ListItem Text="Spain"></asp:ListItem>
<asp:ListItem Text="England"></asp:ListItem>
<asp:ListItem Text="India"></asp:ListItem>
<asp:ListItem Text="Germany"></asp:ListItem>
</asp:DropDownList>
<asp:ImageButton ID="CountriesImage" runat="server" />
客户端:
<body>
<form id="form1" runat="server" >
<script type="text/javascript">
function ddlCountriesSelected() {
var ddlCntrs = document.getElementById('<%=ddlCountries.ClientID %>');
// alert(ddlCntrs.selectedIndex); // debug purpose
if (ddlCntrs.selectedIndex == "1")
{
var img = document.getElementById('<%=CountriesImage.ClientID%>');
img.src ='Images/'+ddlCntrs.options[ddlCntrs.selectedIndex].value+'.png';
return true;
}
else
{
// code to hide the ImageButton
return false;
}
}
</script>
...
...
</body>
// 代码后面
protected void ddlCountries_IndexChanged(object sender,System.EventArgs e)
{
lbl1.Text = ddlCountries.SelectedValue;
}