zoukankan      html  css  js  c++  java
  • Ajax实现DropDownList与ListBox联动效果

    效果图:

    目标:选择DropDownList,左侧ListBox从服务器端获取对应项。点击Button,对左、右侧ListBox进行操作。
                 最后在服务器端获取右侧ListBox的值
    过程:
             1、首先是给DropDownList弄个数据源,实际开发中一般都是从数据库去。我这演示方便就随便new 了个DataTable。


     1
    private void DllBindData()
     
    2    {
     
    3        DataTable table = new DataTable("MyCategory");
     
    4        DataColumn column;
     
    5        DataRow row;
     
    6        column = new DataColumn();
     
    7        column.DataType = System.Type.GetType("System.Int32");
     
    8        column.ColumnName = "iSysCode";
     
    9        table.Columns.Add(column);
    10
    11        column = new DataColumn();
    12        column.DataType = System.Type.GetType("System.String");
    13        column.ColumnName = "cName";
    14        table.Columns.Add(column);
    15
    16        row = table.NewRow();
    17        row["iSysCode"= 1;
    18        row["cName"= "编程语言";
    19        table.Rows.Add(row);
    20
    21        row = table.NewRow();
    22        row["iSysCode"= 2;
    23        row["cName"= "编程工具";
    24        table.Rows.Add(row);
    25
    26        row = table.NewRow();
    27        row["iSysCode"= 3;
    28        row["cName"= "数据库";
    29        table.Rows.Add(row);
    30
    31        ddlCategory.DataSource = table.DefaultView;
    32        ddlCategory.DataValueField = "iSysCode";
    33        ddlCategory.DataTextField = "cName";
    34        ddlCategory.DataBind();
    35    }

             2、有了数据,下面就开始操作了。
                  在DropDownList的客户端事件onchange中添加choose函数,choose中调用sendRequest_Item向服务器请求相应的数据

    1function choose(ddl)
    2            {
    3               sendRequest_Item('http://localhost:83/WebService/Comment.asmx','GetItemList','Get','iCategoryID='+ddl.value+'');
    4            }


             3、服务器端用了个WebService返回数据


             4、分析操作返回的数据(XML格式)这个是关键,在这花了我好长一段时间:用xmlDoc.getElementsByTagName("Item")方法得到的options,长度length总是为0,但确实是有数据返回;用responseText可以正确取出数据。在网上搜了半天也没找到一个适当的解决方法。郁闷n久之后,找到了问题所在,原来是数据被Encode了。这好办,咱就给他DeEncode呗。


             5、这样一来,DropDownList就可以和左侧的ListBox实现联动了。接下来是如何操作它了。这里我只写了最上面两个按钮的点击实现,大家可以根据自己的需要实现其他的两个。看一下JS代码:


             6、进行到这里,右侧的ListBox已经有了结果项了。剩下的是如何在服务器端获取这部分数据。Test了几下表明用Request.Form这种根本无法直接获取到所需数据。那只好转个弯,先将数据放在hiddenField里,然后在服务器端方法里取出来。OK,大功告成!

    感受:
     本来以为弄这么个小东西顶多一上午时间就够了,没想到中间出现了不少问题,一个个解决后,发现竟然用了我一整天(包括晚上啊)的时间。唉,看来做什么事都不能大意啊。另外,大家有什么更好的方法,欢迎一起研究研究,呵呵!

  • 相关阅读:
    【剑指offer】判断二叉树是否为平衡二叉树
    【剑指offer】数字在排序数组中出现的次数
    八大排序方法汇总(选择排序,插入排序-简单插入排序、shell排序,交换排序-冒泡排序、快速排序、堆排序,归并排序,计数排序)
    约瑟夫环问题-循环链表VS数组
    告别2014,你是否感谢这一年的自己?
    浅谈WEB页面提速(前端向)
    HTML5- Canvas入门(七)
    浅谈WEB安全性(前端向)
    是时候搁置Grunt,耍一耍gulp了
    前端神器avalonJS入门(二)
  • 原文地址:https://www.cnblogs.com/xpengfee/p/890239.html
Copyright © 2011-2022 走看看