• 用jquery控制listbox中项的移动,并排序


    以下是用jquery控制ASP.NET中的两个asp:listbox控件中选择项的移动:

    首先是html代码,页面上放2个listbox控件和2个按钮用于移动项目


    <table border="0">
      
    <tr>
        
    <td width="156">全部水果:</td>
        
    <td width="142">&nbsp;</td>
        
    <td width="482">我挑选的:</td>
      
    </tr>
      
    <tr> 
        
    <td rowspan="2"><asp:ListBox SelectionMode="Multiple" ID="listall" Rows="12" Width="156" runat="server"></asp:ListBox></td>
        
    <td height="41" align="center">
        
    <input type="button" id="btnleftmove" value="&gt;&gt;&gt;" onclick="move('listall','listmy');"/><br /><br />
        
    <input type="button" id="btnrighttmove" value="&lt;&lt;&lt;" onclick="move('listmy','listall');"/>
        
    </td>
        
    <td rowspan="2"><asp:ListBox SelectionMode="Multiple" ID="listmy" Rows="12" Width="156" runat="server"></asp:ListBox></td>
      
    </tr>
    </table>

    下面是在.cs文件中绑定一些数据

    Code partial class _Default : System.Web.UI.Page 
    {
        
    protected void Page_Load(object sender, EventArgs e)
        {
            
    if (!IsPostBack)
            {
                BindData();
            }
        }

        
    private void BindData()
        {
            ArrayList list
    =DataArray();
            
    for (int i = 0; i < list.Count; i++)
            {
                listall.Items.Add(list[i].ToString());
                listall.Items[i].Attributes[
    "tag"= i.ToString(); //用tag记录排序字段
            }
        }

        
    private ArrayList DataArray()
        {
            
    //用到的一些数据,这里已默认按第一个字的拼音排序
            ArrayList list = new ArrayList();
            list.Add(
    "草莓");
            list.Add(
    "");
            list.Add(
    "桔子");
            list.Add(
    "芒果");
            list.Add(
    "苹果");
            list.Add(
    "香蕉");
            
    return list;
        }
    }

    在实际使用时可根据数据库中的字段排序

    下面是jquery的代码:

    Code//移动用户选择的角色
    //
    setname:要移出数据的列表名称 getname:要移入数据的列表名称
    function move(setname,getname)
    {
     
    var size=$("#"+setname+" option").size();
     
    var selsize=$("#"+setname+" option:selected").size();
     
    if(size>0&&selsize>0)
     {
         $.each($(
    "#"+setname+" option:selected"), function(id,own){
         
    var text=$(own).text();
         
    var tag=$(own).attr("tag");
         $(
    "#"+getname).prepend("<option tag=\""+tag+"\">"+text+"</option>"); 
         $(own).remove(); 
         $(
    "#"+setname+"").children("option:first").attr("selected",true); 
         });
     }
     
    //重新排序
       $.each($("#"+getname+" option"), function(id,own){
           orderrole(getname);
         });
    }

    //按首字母排序角色列表
    function orderrole(listname)
    {
     
    var size=$("#"+listname+" option").size();
     
    var one=$("#"+listname+" option:first-child");  
     
    if(size>0)
     {
         
    var text=$(one).text();
         
    var tag=parseInt($(one).attr("tag"));
         
    //循环列表中第一项值下所有元素
         $.each($(one).nextAll(), function(id,own){
          
    var nextag=parseInt($(own).attr("tag"));
          
    if(tag>nextag)
         { 
          $(one).remove();
          $(own).after(
    "<option tag=\""+tag+"\">"+text+"</option>");
          one
    =$(own).next();
         }
         });
     }
    }
    这样就完成了简单的js控制两个列表项的值移动。
  • 相关阅读:
    [VC++]利用VS2005进行dump文件调试
    Release和Debug模式下成员变量初始化问题
    JDBC与C++的DB访问性能
    Log4J与LogBack的性能比较
    WinRar命令行参数
    玩弄C++:回调一个类成员函数
    如何将一个模板类A作为模板类B的模板参数
    HibernateException: Unable to instantiate default tuplizer [org.hibernate.tuple.entity.PojoEntityTup
    HibernateException: Unable to instantiate default tuplizer [org.hibernate.tuple.entity.PojoEntityTup
    使用jQuery发送POST,Ajax请求返回JSON格式数据
  • 原文地址:https://www.cnblogs.com/top5/p/1601682.html
Copyright © 2020-2023  润新知