`

关于list列表框的一些工具方法

阅读更多

(2007-08-16 15:15:22)   乔华(56128813)
<SCRIPT language="javascript">
 /***********************************************************************
  * 文 件 名:selectListTools.js
  * 文件描述:关于list列表框的一些工具方法
  * 主要方法:
  *          1, moveUp(oSelect,isToTop) --- 向上移动一个list列表框的选中项目,
  *                                                                    可以支持多选移动,可以设置是否移动到顶层
  *          2, moveDown(oSelect,isToBottom)---- 向下移动一个list列表框的选中项目,
  *                                                                     可以支持多选移动,可以设置是否移动到底层
  *          3, moveSelected(oSourceSel,oTargetSel) ------ 在两个列表框之间转移数据
  *          4, moveAll(oSourceSel,oTargetSel)--------- 转移两个列表框之间的全部数据
  *          5, deleteSelectItem(oSelect) ----------- 删除所选的项目
  *
 ***********************************************************************/
 
 /**
  * 使选中的项目上移
  *
  * oSelect: 源列表框
  * isToTop: 是否移至选择项到顶端,其它依次下移,
  *          true为移动到顶端,false反之,默认为false
  */
 function moveUp(oSelect,isToTop)
 {
     //默认状态不是移动到顶端
     if(isToTop == null)
         var isToTop = false;
        
     //如果是多选------------------------------------------------------------------
     if(oSelect.multiple)
     {
         for(var selIndex=0; selIndex<oSelect.options.length; selIndex++)
         {
             //如果设置了移动到顶端标志
             if(isToTop)
             {
                 if(oSelect.options[selIndex].selected)
                 {
                     var transferIndex = selIndex;
                     while(transferIndex > 0 && !oSelect.options[transferIndex - 1].selected)
                     {
                         oSelect.options[transferIndex].swapNode(oSelect.options[transferIndex - 1]);
                         transferIndex --;
                     }
                 }
             }
             //没有设置移动到顶端标志
             else
             {
                 if(oSelect.options[selIndex].selected)
                 {
                     if(selIndex > 0)
                     {
                         if(!oSelect.options[selIndex - 1].selected)
                             oSelect.options[selIndex].swapNode(oSelect.options[selIndex - 1]);
                     }
                 }
             }
         }
     }
     //如果是单选--------------------------------------------------------------------
     else
     {
         var selIndex = oSelect.selectedIndex;
         if(selIndex <= 0)
             return;
         //如果设置了移动到顶端标志
         if(isToTop)
         {
             while(selIndex > 0)
             {
                 oSelect.options[selIndex].swapNode(oSelect.options[selIndex - 1]);
                 selIndex --;
             }
         }
         //没有设置移动到顶端标志
         else       
             oSelect.options[selIndex].swapNode(oSelect.options[selIndex - 1]);
     }
 }

/**
  * 使选中的项目下移
  *
  * oSelect: 源列表框
  * isToTop: 是否移至选择项到底端,其它依次上移,
  *          true为移动到底端,false反之,默认为false
  */
 function moveDown(oSelect,isToBottom)
 {
     //默认状态不是移动到顶端
     if(isToBottom == null)
         var isToBottom = false;
        
     var selLength = oSelect.options.length - 1;
    
     //如果是多选------------------------------------------------------------------
     if(oSelect.multiple)
     {
         for(var selIndex=oSelect.options.length - 1; selIndex>= 0; selIndex--)
         {
             //如果设置了移动到顶端标志
             if(isToBottom)
             {
                 if(oSelect.options[selIndex].selected)
                 {
                     var transferIndex = selIndex;
                     while(transferIndex < selLength && !oSelect.options[transferIndex + 1].selected)
                     {
                         oSelect.options[transferIndex].swapNode(oSelect.options[transferIndex + 1]);
                         transferIndex ++;
                     }
                 }
             }
             //没有设置移动到顶端标志
             else
             {
                 if(oSelect.options[selIndex].selected)
                 {
                     if(selIndex < selLength)
                     {
                         if(!oSelect.options[selIndex + 1].selected)
                             oSelect.options[selIndex].swapNode(oSelect.options[selIndex + 1]);
                     }
                 }
             }
         }
     }
     //如果是单选--------------------------------------------------------------------
     else
     {
         var selIndex = oSelect.selectedIndex;
         if(selIndex >= selLength - 1)
             return;
         //如果设置了移动到顶端标志
         if(isToBottom)
         {
             while(selIndex < selLength - 1)
             {
                 oSelect.options[selIndex].swapNode(oSelect.options[selIndex + 1]);
                 selIndex ++;
             }
         }
         //没有设置移动到顶端标志
         else       
             oSelect.options[selIndex].swapNode(oSelect.options[selIndex + 1]);
     }
 }

/**
  * 移动select的部分内容,必须存在value,此函数以value为标准进行移动
  *
  * oSourceSel: 源列表框对象
  * oTargetSel: 目的列表框对象
  */
 function moveSelected(oSourceSel,oTargetSel)
 {
     //建立存储value和text的缓存数组
     var arrSelValue = new Array();
     var arrSelText = new Array();
     //此数组存贮选中的options,以value来对应
     var arrValueTextRelation = new Array();
     var index = 0;//用来辅助建立缓存数组
    
     //存储源列表框中所有的数据到缓存中,并建立value和选中option的对应关系
     for(var i=0; i<oSourceSel.options.length; i++)
     {
         if(oSourceSel.options[i].selected)
         {
             //存储
             arrSelValue[index] = oSourceSel.options[i].value;
             arrSelText[index] = oSourceSel.options[i].text;
             //建立value和选中option的对应关系
             arrValueTextRelation[arrSelValue[index]] = oSourceSel.options[i];
             index ++;
         }
     }
    
     //增加缓存的数据到目的列表框中,并删除源列表框中的对应项
     for(var i=0; i<arrSelText.length; i++) 
     {
         //增加
         var oOption = document.createElement("option");
         oOption.text = arrSelText[i];
         oOption.value = arrSelValue[i];
         oTargetSel.add(oOption);
         //删除源列表框中的对应项
         oSourceSel.removeChild(arrValueTextRelation[arrSelValue[i]]);
     }
 }

/**
  * 移动select的整块内容
  *
  * oSourceSel: 源列表框对象
  * oTargetSel: 目的列表框对象
  */
 function moveAll(oSourceSel,oTargetSel)
 {
     //建立存储value和text的缓存数组
     var arrSelValue = new Array();
     var arrSelText = new Array();
    
     //存储所有源列表框数据到缓存数组
     for(var i=0; i<oSourceSel.options.length; i++)
     {
         arrSelValue[i] = oSourceSel.options[i].value;
         arrSelText[i] = oSourceSel.options[i].text;
     }
    
     //将缓存数组的数据增加到目的select中
     for(var i=0; i<arrSelText.length; i++) 
     {
         var oOption = document.createElement("option");
         oOption.text = arrSelText[i];
         oOption.value = arrSelValue[i];
         oTargetSel.add(oOption);
     }
    
     //清空源列表框数据,完成移动
     oSourceSel.innerHTML = "";
 }

/**
  * 删除选定项目
  *
  * oSelect: 源列表框对象
  */
 function deleteSelectItem(oSelect)
 {
     for(var i=0; i<oSelect.options.length; i++)
     {
         if(i>=0 && i<=oSelect.options.length-1 && oSelect.options[i].select

分享到:
评论

相关推荐

    完整版超级列表框选择框状态被改变.rar

    在Windows应用程序开发中,特别是使用MFC(Microsoft Foundation Classes)框架时,超级列表框是经常用来展示复杂数据的工具。当用户在列表框中勾选或取消勾选复选框时,程序需要能够响应这些状态变化,以便进行相应...

    易语言超级列表框表项上下移动

    超级列表框(Super List Box)是易语言提供的一种具有强大功能的组件,它不仅具备普通列表框的基本功能,如添加、删除、选择等,还能支持多选、自定义列宽、排序等功能。在设计用户界面时,如果需要展示的数据有动态...

    MFC列表框的使用

    在Microsoft Foundation Classes (MFC)库中,列表框(List Box)是一种常见的用户界面元素,用于显示一系列可选择的项。本篇文章将深入探讨MFC中列表框的使用,包括其基本概念、创建与操作,以及如何将其应用于类似...

    易语言选择列表框应用

    1. **创建选择列表框**:在易语言的界面设计器中,你可以通过工具箱找到“选择列表框”控件,将其拖放到窗口上。然后,可以调整其大小和位置以适应界面布局。 2. **添加列表项**:为了使选择列表框具有可选内容,你...

    易语言源码取超级列表框的行和列.rar

    本压缩包“易语言源码取超级列表框的行和列.rar”提供了易语言下操作超级列表框(Super List Box)控件的源代码,主要涉及如何获取列表框中的行和列信息,这是GUI编程中常见的需求,尤其在数据展示和用户交互中。...

    Excel-VBA实用技巧范例-操作列表框.zip

    以下是关于Excel VBA操作列表框的一些关键知识点: 1. **创建列表框**:在Excel工作表中,我们可以通过VBA插入一个列表框控件。这可以通过“开发工具”菜单下的“控件”工具栏,选择“列表框”后,在工作表上绘制出...

    自绘制列表框

    在Windows编程中,自绘制列表框(Owner Draw List Box)是一种高级技术,允许程序员通过重写特定消息处理函数来控制列表框中每个项目的外观。这种技术通常用于实现自定义的图形样式、添加复杂的视觉效果或者扩展标准...

    易语言超级列表框去除标题重复项.7z

    在这个“易语言超级列表框去除标题重复项.7z”压缩包中,我们主要讨论的是如何在易语言中处理超级列表框(Super List Box)中的数据,特别是如何去重标题项。 超级列表框是易语言提供的一种常用控件,用于显示多列...

    超级列表框类模块和例程

    在编程领域,超级列表框(Super List Box)是一种控件,通常用于显示大量数据,并提供比标准列表框更丰富的功能。在Windows编程中,比如使用Visual Basic或C++ Builder,开发者可能会遇到内置列表框控件的功能限制,...

    可编辑的列表框

    这些样式包括子窗口、剪辑兄弟窗口内容、工具窗口风格、边框等,以及列表框特有的全行选中和网格线显示。 #### 4. 自定义类与编辑功能 为了让列表框支持编辑功能,我们需要创建一个自定义的`CNewListCtrl`类继承自...

    易语言自绘大图列表框源码(可仿Rolan等软件管理工具)

    列表框(List Box)是软件界面中常见的组件,通常用于显示一列或多列的数据。在自绘大图列表框中,不仅可以显示文本信息,还能显示与数据相关的图片,这对于文件管理、媒体库、应用商店等应用来说非常实用。通过自绘...

    VS2019编写的列表框LIST

    在Microsoft Visual Studio 2019 (VS2019) 中,MFC(Microsoft Foundation Classes)库提供了一种方便的方式来创建和管理用户界面元素,其中包括列表框(List Box)。列表框是Windows应用程序中常见的控件,允许用户...

    易语言超级列表框排序

    这个消息是Windows操作系统中List View控件(易语言中的超级列表框)用于排序的专用消息。当向列表框发送此消息时,系统会调用一个回调函数,该函数负责比较列表框中的两行数据并返回它们的相对顺序。在易语言中,...

    完整版超级编辑框和超级列表框联动输入.rar

    在IT领域,超级编辑框(Super Edit Box)和超级列表框(Super List Box)是两种常用的用户界面组件,尤其在开发复杂应用或者需要提供高级文本编辑和数据展示功能时。这两种控件通常用于构建具有高级特性的应用程序,...

    EXCEL数据导入与导出超级列表框例程

    超级列表框是一种能够增强用户交互性的工具,它可以提供比标准列表框更多的功能,比如筛选、排序和多列显示。在这个“EXCEL数据导入与导出超级列表框例程”中,我们可以探讨以下几个核心知识点: 1. **数据导入**:...

    完整版超级列表框导出EXECL.rar

    在实际应用中,超级列表框的数据往往需要与外部文件进行交互,其中Excel是最常见的数据存储和处理工具。将超级列表框中的数据导出到Excel,不仅可以方便用户进行进一步的数据分析,也可以减轻程序内存负担,提高程序...

    易语言列表框表项跟踪源码

    列表框(List Box)是GUI程序中常见的控件,用于显示一系列可选择的项目。在这个"易语言列表框表项跟踪源码"中,我们可以探讨易语言如何实现对列表框中的表项进行跟踪和管理。 在易语言中,列表框的操作主要通过...

    labview列表框的使用

    在LabVIEW中,列表框(List Box)是一个非常重要的用户界面元素,它允许用户通过图形化的方式查看和选择一系列数据项。本文将深入探讨LabVIEW列表框的使用方法、功能以及在实际项目中的应用。 ### 列表框的基本概念 ...

    VB中处理长列表框项的两种方法...

    本文将深入探讨两种在VB中处理长列表框项的有效方法,旨在提高程序性能并增强用户体验。 ### 方法一:利用API进行智能显示 在VB中,当列表框内的项目数量过多或文本过长时,直接显示可能会影响性能,特别是在没有...

    超级编辑框和超级列表框联动输入

    超级列表框(Super List Box)则是一种增强型的列表控件,它比普通的列表框更加强大,除了基本的列表展示功能,还可能包含复选框、图像、自定义列宽等功能。在易语言中,超级列表框可以用于显示大量的结构化数据,...

Global site tag (gtag.js) - Google Analytics