dropdownlist
页面中有ImageButton
和.aspx
。当用户选择国家澳大利亚时,需要显示一个ImageButton(一个标志图像),用户可以在点击它时将用户带到各自的网站。其他网站在内部托管,因此无需显示图像按钮。
为下拉列表定义了客户端和服务器端事件。
问题是此下拉列表的服务器端事件: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;
}
答案 0 :(得分:2)
希望以下代码能解决您的问题 -
<asp:DropDownList ID="ddlCountries" runat="server"
AutoPostBack="true" OnSelectedIndexChanged="ddlCountries_IndexChanged"
onchange="ddlCountriesSelected();">
<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, EventArgs e)
{
lbl1.Text = ddlCountries.SelectedValue;
}
确保添加标签..:D
答案 1 :(得分:0)
这里我建议您检查“ddlCountriesSelected”函数的返回值。 如果返回false,那么DropDownList控件也无法将页面发布到服务器上。 尝试通过java脚本函数在两种情况下返回“True”。
<script type="text/javascript">
function ddlCountriesSelected() {
var ddlCntrs = document.getElementById('<%=ddlCountries.ClientID %>');
if (ddlCntrs.selectedIndex == "1")
{
var img = document.getElementById('<%=ImageButton1.ClientID%>');
img.src ='Images/'+ddlCntrs.options[ddlCntrs.selectedIndex].value+'.png';
return true;
}
else
{
// code to hide the ImageButton
return true;
}
}
</script>
答案 2 :(得分:0)
是的,我有另一个想法给你。 请删除下拉控件的“onchange”事件。 另外我建议你在“ddlCountries_IndexChanged”事件处理程序中设置服务器上的Image控件的“src”。
答案 3 :(得分:0)
尝试在客户端和服务器端代码中进行以下修改,以便它可以正常工作
<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 true;
}
}
</script>
... ...
//服务器端代码
protected void ddlCountries_IndexChanged(object sender, EventArgs e)
{
lbl1.Text = ddlCountries.SelectedValue;
}