我们在许多是时候,要在DropDownList添加一个onchange事件,在.Cs文件中我们还有一个onSelectedIndexChanged事件,我们添加它的onchange事件,大部分就是为了在客户端先让用户确认一下,在回传服务器,提高用户体验性。
       而如果我们在Html源代码中,自己给它加上onchange事件的话,有可能提示"服务器标记不正确"或你没有得到你所期望的值。For Example:

<asp:DropDownList runat="server" ID="MyDropDownListSex" onchange="JavaScript:selectChange(this,'<%= MyDropDownListSex.ClientID %>');">
    <asp:ListItem>boy</asp:ListItem>
    <asp:ListItem>girl</asp:ListItem>
    </asp:DropDownList>

其中调用的js代码是:

<script type="">
function selectChange(from,to)
            {
               alert("From:"+from.selectedIndex+" To: "+to);
            }
</script>

我们如果执行上面的代码,会提示什么呢?你一定认为它提示的是 From:0 To:MyDropDownListSex,但是事与愿违,它提示的却是From:0 To:<%= MyDropDownListSex.ClientID %>。为什么会出现这个结果呢?查阅了一些资料也没有获得满意的结果,如果哪位有知道的还请指导。咱们还是接着往下说解决办法。
      那如果我们真的想这么做的话,难道就没有办法解决了吗?不,我们可能经常给TextBox在后台添加属性,那么我们也可以在后台动态给DropDownList动态的加上onchange属性,那我们试试:在.Cs中OnPage_Load中加上:

MyDropDownListSex.Attributes.Add("onchange", "selectChange(this,'"+this.MyDropDownListSex.ClientID+"')");

F5运行,然后选择,那么结果就出来了 ,From:0 To:MyDropDownListSex,正如我们所希望的结果。

还有一种情况就是我们的DropDownList包含在一个数据列表控件中比如:repeater中,那么我们在onPage_Load事件中就没有MyDropDownList这个控件了,那我们怎么实现呢?其实很简单,如果我们能够找到这个MyDropDownList空间就行了,由于这个比较简单,在这就不详细说明了,就列出一些代码看看就行了。
      List 1:

<asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="Repeater1_ItemDataBound">
        <ItemTemplate>
        <%#Eval("name") %>
        <asp:HiddenField ID="myyear" runat="server" Value='<%#Eval("year") %>' />
        <asp:DropDownList ID="DropDownList1"   runat="server">
        <asp:ListItem>1</asp:ListItem>
        <asp:ListItem>2</asp:ListItem>
        </asp:DropDownList>

List 2:

DataTable dt = new DataTable();
        dt.Columns.Add("name");
        dt.Columns.Add("age");
        dt.Columns.Add("year");
        DataRow dr = dt.NewRow();
        dr[0] = "兴百放";
        dr[1] = "22";
        dr[2] = "1986";
        dt.Rows.Add(dr);

        DataRow dr2 = dt.NewRow();
        dr2[0] = "王明";
        dr2[1] = "25";
        dr2[2] = "1984";
        dt.Rows.Add(dr2);

        this.Repeater1.DataSource = dt;
        this.Repeater1.DataBind();

List 3:

protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        DropDownList dl = (DropDownList)e.Item.FindControl("DropDownList1");
        HiddenField hf = (HiddenField)e.Item.FindControl("myyear");
        dl.Attributes.Add("onchange", "JavaScript:selectChange(this,'"+hf.Value+"')");
    }

转载于:https://www.cnblogs.com/xbf321/archive/2008/03/04/add-onchage-in-dropdownlist.html

给服务器端DropDownList控件添加客户端onchange事件相关推荐

  1. 在asp.net中为Web用户控件添加属性和事件

    在90年代初,Microsoft为Web程序员提供的 Active Server Pages(ASP)革命性地改变了Web的编程.它可以利用十分易用的模型在Web服务器上动态生成HTML,并且很容易的 ...

  2. DropDownList 控件不能触发SelectedIndexChanged 事件的另一个原因

    相信DropDownList 控件不能触发SelectedIndexChanged 事件已经不是什么新鲜事情了,原因也无外乎以下几种: 1.DropDownList 控件的属性 AutoPostBac ...

  3. DropDownList 控件不能触发SelectedIndexChanged 事件

    相信DropDownList 控件不能触发SelectedIndexChanged 事件已经不是什么新鲜事情了,原因也无外乎以下几种: 1.DropDownList 控件的属性 AutoPostBac ...

  4. DropDownList控件不触发SelectedIndexChanged事件(转)

    DropDownList控件不触发SelectedIndexChanged事件(转) 相信DropDownList 控件不能触发SelectedIndexChanged 原因以下几种: 1.DropD ...

  5. 金蝶EAS DEP脚本(5)给常用控件添加值改变事件

    给常用控件添加事件 一.F7 给F7添加值改变事件 //F7控件增加值改变监听 pluginCtx.getKDBizPromptBox("prmtCompany").addData ...

  6. easyui日期控件datebox的onchange事件

    <input type="text" id="date_" name="date_" class="easyui-dateb ...

  7. 为服务器端控件添加js.net

    为服务器端控件添加js .net 2009-11-11 22:46:38 阅读7 评论0 字号:大中小 页面添加TextBox控件,不可能定义一个服务器端的losefocus事件,如果每次losefo ...

  8. 为ASP.NET控件添加常用的JavaScript操作

    1.为button控件添加确认功能 要想为服务器控件添加客户端的事件,需要用到Attributes属性.Attributes属性是所有的服务器控件都有的一个属性,它用来为最终生成的HTML添加自定义的 ...

  9. 控件添加与不添加runat=server的作用及区别

    1.runat="server"的作用? runat="server"是将ASPX中某个控件标识为服务器端的控件,使得服务端(CS)中可以直接访问它 2.run ...

  10. ASP.NET 控件添加与不添加runat=server的作用及区别

    原文转载于:https://blog.csdn.net/being_towards_death/article/details/81117340?utm_source=blogxgwz0 1.runa ...

最新文章

  1. Xamarin图表开发基础教程(11)OxyPlot框架支持的图表类型
  2. c++函数重载机制实现原理
  3. Android实现简单的检测手机自由落体关闭屏幕
  4. Cobertura和Sonar 5.1的问题
  5. Ant Design Pro 2.0/umijs站点配置到非站点根目录下处理
  6. 如何进入指定文件目录_Python如何遍历操作指定文件目录下的全部Excel文件?
  7. 前端:JS/23/JS内置对象(String对象,Array对象,Date对象,Boolean对象,Number对象,Math对象),实例:求圆的面积,求直角三角形
  8. history模式 nginx配置_Vue history模式Nginx配置
  9. 自动化框架应该具备的要点
  10. Extjs中设置只读的样式问题
  11. qt自定义QtWidgets
  12. Labview完全卸载工具msiblast NI
  13. 最优化理论与方法(袁亚湘 孙文瑜)笔记(一)
  14. t分布f分布与样本均值抽样分布_T检验和其他假设检验的P值怎么理解
  15. essay 浅谈ACM盲区(下)
  16. 《西部世界》与《头号玩家》:哪个才是人类与人工智能相处的正确方式?
  17. flutter入门之实现展示机构树的功能
  18. POJ 3984-迷宫问题 (dfs)
  19. 一分钟搞懂 微调(fine-tuning)和prompt
  20. createjs基础入门

热门文章

  1. java 开源im_开源IM项目-InChat登录接口设计与实现(基于Netty)
  2. spring jpa查询视图
  3. [SHOI2008]堵塞的交通
  4. 给构造函数(constructor)创建对象(object)
  5. scala 高级十六 scala 集合和集合的高级特性 map flatten fllatmap zip reduce zip 等操作...
  6. namenode 无法启动之每次开机需要重新格式化-tmp
  7. LOJ2257 SNOI2017 遗失的答案 容斥、高维前缀和
  8. 安装运行jupyter notebook时报错:ModuleNotFoundError: No module named 'prompt_toolkit.formatted_text'...
  9. 开关灯问题 BulbSwitch
  10. CSS template