0

一个页面中有一个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;
    }
4

4 回答 4

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

于 2013-09-18T06:51:49.140 回答
0

是的,我有另一个想法给你。请删除下拉控件的“onchange”事件。此外,我建议您在“ddlCountries_IndexChanged”事件处理程序中设置服务器上图像控件的“src”。

于 2013-09-18T06:47:31.763 回答
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;

}
于 2013-09-21T09:31:57.240 回答
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>
于 2013-09-18T06:30:02.473 回答