C/S的 DropDownList的SelectedIndexChanged事件失效??求解决方法。

时间:2021-04-24 20:55:15
    是这样的,我在母版页放置了一个DropDownList控件,并且要利用到它的SelectedIndexChanged事件来实现:当我选择不同的下拉项时,右边的图片控件显示不同的图片。最开始我是用一个用户控件来做的,经测试,是有效果的。因为我要用AJAX控件来做一个弹出浮动,并且可以拖动的效果。应为无法获得自定义控件上的按钮,所以我直接将代码拷贝到了母版页,但是这样一来就失去了效果(切换下拉项时没有触发事件)。请问该怎么解决呢?


母版页的后台
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Xml.Linq;
using System.IO;

public partial class MainMaster : System.Web.UI.MasterPage
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            ArrayList fileName = new ArrayList();
            fileName = GetImgName();
            this.ddl_face.DataSource = fileName;
            this.ddl_face.DataBind();
            this.img_face.ImageUrl = "~/Images/Face/" + fileName[this.ddl_face.SelectedIndex].ToString();

        }

    }
    private ArrayList GetImgName()
    {
        ArrayList names = new ArrayList();
        string[] filePath = Directory.GetFiles(Request.PhysicalApplicationPath + @"Images\Face");//获取头像目录中所有的文件
        for (int i = 0; i < filePath.Length; i++)
        {
            string lastNameTemp = Path.GetExtension(filePath[i]);
            if (lastNameTemp.Equals(".png") || lastNameTemp.Equals(".jpg") || lastNameTemp.Equals(".gif") || lastNameTemp.Equals(".bmp"))
            {
                string[] nameTemp = filePath[i].Split('\\');
                names.Add(nameTemp[nameTemp.Length - 1]);
            }
        }
        return names;
    }
    protected void ddl_face_SelectedIndexChanged(object sender, EventArgs e)
    {
        ArrayList fileName = new ArrayList();
        fileName = GetImgName();
        this.img_face.ImageUrl = "~/Images/Face/" + fileName[this.ddl_face.SelectedIndex].ToString();
    }
}



asp.net 前台页面:
<%@ Master Language="C#" AutoEventWireup="true" CodeFile="MainMaster.master.cs" Inherits="MainMaster" %>

<%@ Register Assembly="AjaxControlToolkit, Version=3.0.20229.20843, Culture=neutral, PublicKeyToken=28f01b0e84b6d53e"
    Namespace="AjaxControlToolkit" TagPrefix="cc1" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <link href="./App_Themes/MainMaster/MainMaster.css" rel="stylesheet" type="text/css" />
    <asp:ContentPlaceHolder id="head" runat="server">
    </asp:ContentPlaceHolder>
    <script type="text/javascript">
        function cancleShow()
        { }
    </script>
</head>
<body>
    <form id="MainForm" runat="server">
    <cc1:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">
    </cc1:ToolkitScriptManager>
    <div id="main">
        <table id="top">
            <tr>
                <td></td>
                <td class="regText"><asp:LinkButton ID="lbtn_reg" runat="server">加入我们</asp:LinkButton></td>
            </tr>
            <tr>
                <td colspan="2" class="logo"><a href="Index.aspx"><img src="./Images/logo.jpg" alt="LOGO" /></a></td>
            </tr>
            <tr>
                <td><div class="menuEmpyt"></div></td>
                <td>
                    <myControl:menu runat="server" ID="menu"/>
                </td>
            </tr>
        </table>
        <asp:ContentPlaceHolder id="content" runat="server">
        
        </asp:ContentPlaceHolder>
    </div>
            <!--用户注册浮动窗口开始-->
        <asp:Panel ID="Panel1" runat="server" BackImageUrl="~/Images/floatBG.png">
            <div id="childMain">
                <table width="650px">
                    <tr>
                        <td>
                            <div class="topEmpty"></div>
                        </td>
                    </tr>
                    <tr>
                        <td colspan="3">
                            <div id="closeBtn_reg">
                                <asp:ImageButton ID="ImageButton2" runat="server" ImageUrl="~/Images/CloseBtn.png" />
                            </div>                
                            <div id="title_REG">请在此录入信息以便及加入我们</div>
                        </td>
                    </tr>
                    <tr height="55px">
                        <td width="80px">
                            <div class="username">用户名:</div>
                        </td>
                        <td width="120px" align="left">
                            <asp:TextBox ID="TextBox1" Width="270px" runat="server" BackColor="#eef2a9"></asp:TextBox>
                        </td>
                        <td align="left" >
                            <div class="usernameTest">*必填,大于4位小于12位。</div>
                        </td>
                    </tr>
                    <tr height="55px">
                        <td><div class="name">姓名:</div></td>
                        <td align="left">
                            <asp:TextBox ID="txt_name" Width="270px" runat="server" BackColor="#eef2a9" ></asp:TextBox>
                        </td>
                        <td align="left" ><div class="nameTest">*必填,请填写真实姓名。</div></td>
                    </tr>
                    <tr height="55px">
                        <td><div class="sex">性别:</div></td>
                        <td align="left" >
                            <asp:RadioButton ID="rbtn_w" runat="server" Text="男" GroupName="sex" />
                            <asp:RadioButton ID="rbtn_m" runat="server" Text="女" GroupName="sex"  />
                        </td>
                        <td align="left" ><div class="sexTest">*必选,请选择您的真实性别。</div></td>
                    </tr>
                    <tr height="55px">
                        <td><div class="mail">E-mail:</div></td>
                        <td align="left" >
                            <asp:TextBox ID="txt_mail" Width="270px" runat="server" BackColor="#eef2a9" ></asp:TextBox>
                        </td>
                        <td align="left" ><div class="mailTest">*必填,为方便与您联系,请填写真实有效的邮箱。</div></td>
                    </tr>
                    <tr height="40px">
                        <td><div class="face">头像:</div></td>
                        <td align="left" >
                            <div>
                                <asp:DropDownList ID="ddl_face" runat="server" BackColor="#eef2a9" AutoPostBack="True" 
                                    align="left" onselectedindexchanged="ddl_face_SelectedIndexChanged"></asp:DropDownList>
                            </div>
                            <div class="faceImg">
                                <asp:Image ID="img_face" runat="server" Width="80px" Height="80px" />
                            </div>

                        </td>
                        <td align="left" >
                            <div class="faceTest">请选择您喜欢的头像。</div>
                            <div class="submitBtn">
                                <asp:ImageButton ID="ibtn_submit" runat="server" ImageUrl="~/Images/SubmitBtn.png" />
                            </div>

                        </td>
                    </tr>
                </table>
            </div>
            <cc1:ConfirmButtonExtender ID="ConfirmButtonExtender2" 
                                       runat="server" 
                                       TargetControlID="lbtn_reg" 
                                       DisplayModalPopupID="ModalPopupExtender2" 
                                       OnClientCancel="cancleShow">
            </cc1:ConfirmButtonExtender>
            <cc1:ModalPopupExtender ID="ModalPopupExtender2" 
                                    runat="server" 
                                    TargetControlID="lbtn_reg" 
                                    PopupControlID="Panel1" 
                                    OkControlID="ibtn_submit" 
                                    CancelControlID="ImageButton2">
            </cc1:ModalPopupExtender>
            <cc1:DragPanelExtender ID="DragPanelExtender2" 
                                   runat="server" 
                                   TargetControlID="Panel1" 
                                   DragHandleID="Panel1">
            </cc1:DragPanelExtender>
        </asp:Panel>
        
        <!--用户注册浮动窗口结束-->
    </form>
</body>
</html>

4 个解决方案

#1


引用楼主 nozeryu 的回复:
是这样的,我在母版页放置了一个DropDownList控件,并且要利用到它的SelectedIndexChanged事件来实现:当我选择不同的下拉项时,右边的图片控件显示不同的图片。最开始我是用一个用户控件来做的,经测试,是有效果的。因为我要用AJAX控件来做一个弹出浮动,并且可以拖动的效果。应为无法获得自定义控件上的按钮,所以我直接将代码拷贝到了母版页,但是这样一来就失去了效果(切换下拉项时没有……


看起来你缺乏工程经验。做工程的人不像一些学生,动不动推到重来总是重复写代码。既然你在用户控件中做好了,那么就应该把用户控件放到master page中,调用者通过用户控件的接口与之通讯,而不是去在master page上重复去写什么东西。

#2


“应为无法获得自定义控件上的按钮”

有两类解决方式:

一:如果你的用户控件确实需要暴露控件,写
public Button 你要的按钮
{
   get{
     EnsureChildControl();
     return this.theButton1;
   }
}


二:实际上控件应该封装控件实现,而是仅仅提供数据属性用来通讯。用户控件内部到底是用什么表现层来实现它的数据接口的,这不需要暴露给调用者。

#3


引用 1 楼 sp1234 的回复:
引用楼主 nozeryu 的回复:
是这样的,我在母版页放置了一个DropDownList控件,并且要利用到它的SelectedIndexChanged事件来实现:当我选择不同的下拉项时,右边的图片控件显示不同的图片。最开始我是用一个用户控件来做的,经测试,是有效果的。因为我要用AJAX控件来做一个弹出浮动,并且可以拖动的效果。应为无法获得自定义控件上的按钮,所以我直接将代码拷贝到了母版页,但……



感谢楼上的批评,我确实没有工作经验,我还是学生。但我相信没有多少人会喜欢重复的做同一件事情,但是,我实在是找不到怎么解决这个问题,我希望把这个页面浮动起来,但是在用户控件中,我在母版页无法得到提交按钮,而在用户控件中我又无法浮动,所以我不知道该怎么解决。

#4


谢谢,sp1234,的指导,我又明白了一个知识点……

#1


引用楼主 nozeryu 的回复:
是这样的,我在母版页放置了一个DropDownList控件,并且要利用到它的SelectedIndexChanged事件来实现:当我选择不同的下拉项时,右边的图片控件显示不同的图片。最开始我是用一个用户控件来做的,经测试,是有效果的。因为我要用AJAX控件来做一个弹出浮动,并且可以拖动的效果。应为无法获得自定义控件上的按钮,所以我直接将代码拷贝到了母版页,但是这样一来就失去了效果(切换下拉项时没有……


看起来你缺乏工程经验。做工程的人不像一些学生,动不动推到重来总是重复写代码。既然你在用户控件中做好了,那么就应该把用户控件放到master page中,调用者通过用户控件的接口与之通讯,而不是去在master page上重复去写什么东西。

#2


“应为无法获得自定义控件上的按钮”

有两类解决方式:

一:如果你的用户控件确实需要暴露控件,写
public Button 你要的按钮
{
   get{
     EnsureChildControl();
     return this.theButton1;
   }
}


二:实际上控件应该封装控件实现,而是仅仅提供数据属性用来通讯。用户控件内部到底是用什么表现层来实现它的数据接口的,这不需要暴露给调用者。

#3


引用 1 楼 sp1234 的回复:
引用楼主 nozeryu 的回复:
是这样的,我在母版页放置了一个DropDownList控件,并且要利用到它的SelectedIndexChanged事件来实现:当我选择不同的下拉项时,右边的图片控件显示不同的图片。最开始我是用一个用户控件来做的,经测试,是有效果的。因为我要用AJAX控件来做一个弹出浮动,并且可以拖动的效果。应为无法获得自定义控件上的按钮,所以我直接将代码拷贝到了母版页,但……



感谢楼上的批评,我确实没有工作经验,我还是学生。但我相信没有多少人会喜欢重复的做同一件事情,但是,我实在是找不到怎么解决这个问题,我希望把这个页面浮动起来,但是在用户控件中,我在母版页无法得到提交按钮,而在用户控件中我又无法浮动,所以我不知道该怎么解决。

#4


谢谢,sp1234,的指导,我又明白了一个知识点……