文档章节

listbox多选实现上下移动 js版和服务器版

深圳大道
 深圳大道
发布于 2016/12/29 15:31
字数 471
阅读 7
收藏 0
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="X200906021128.aspx.cs" Inherits="ListBoxs_X200906021128" %>
<!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">
    <title></title>
    <script type="text/javascript">
        function MoveUP(fElement)
        {
            if (fElement.options.length == 0 || fElement.options[0].selected) return;
            for (var i = 1; i < fElement.options.length; i++)
            {
                if (fElement.options[i].selected)
                {
                    var text = fElement.options[i].text;
                    var value = fElement.options[i].value;
                    var selected = fElement.options[i].selected;

                    fElement.options[i].text = fElement.options[i - 1].text;
                    fElement.options[i].value = fElement.options[i - 1].value;
                    fElement.options[i].selected = fElement.options[i - 1].selected;
                    
                    fElement.options[i - 1].text = text;
                    fElement.options[i - 1].value = value;
                    fElement.options[i - 1].selected = selected;
                }
            }
        }

        function MoveDown(fElement)
        {
            if (fElement.options.length == 0 || fElement.options[fElement.options.length - 1].Selected) return;
            
            for (var i = fElement.options.length - 1; i > -1; i--)
            {
                if (fElement.options[i].selected)
                {
                    var text = fElement.options[i + 1].text;
                    var value = fElement.options[i + 1].value;
                    var selected = fElement.options[i + 1].selected;

                    fElement.options[i + 1].text = fElement.options[i].text;
                    fElement.options[i + 1].value = fElement.options[i].value;
                    fElement.options[i + 1].selected = fElement.options[i].selected;

                    fElement.options[i].text = text;
                    fElement.options[i].value = value;
                    fElement.options[i].selected = selected;
                }
            }
        }
        
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:ListBox ID="fListBox" runat="server" Height="200px" SelectionMode="Multiple" Width="200px"></asp:ListBox>
        <br />
        <br />
        --- Server Side ------------------------------------------------------
        <br />
        <br />
        <asp:Button ID="btnUp" runat="server" onclick="btnUp_Click" Text="Up" />
        <asp:Button ID="btnDown" runat="server" onclick="btnDown_Click" Text="Down" />
        <br />
        <br />
        --- Client Side ------------------------------------------------------
        <br />
        <br />
        <input type="button" value="UP" onclick="MoveUP(document.getElementById('fListBox'));" />
        <input type="button" value="Down" onclick="MoveDown(document.getElementById('fListBox'));" />
        <br />
         用 Ctrl + 鼠标 或 Ctrl + Shift 鼠标,实现多选或间断多选
    </div>
    </form>
</body>
</html>

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class ListBoxs_X200906021128 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            for (int i = 0; i < 20; i++)
                fListBox.Items.Add(i.ToString());
        }
    }

    protected void btnUp_Click(object sender, EventArgs e)
    {
        // 没有项,或第一个选中节点已经是第一项,则不处理
        if (this.fListBox.Items.Count == 0 || this.fListBox.Items[0].Selected) return; 
        for (int i = 1; i < this.fListBox.Items.Count; i++)
        {
            if (this.fListBox.Items[i].Selected)
                this.ChangeProperty(this.fListBox.Items[i - 1], this.fListBox.Items[i]);
        }
    }

    protected void btnDown_Click(object sender, EventArgs e)
    {
        // 没有项,或最后一个选中节点已经是第一项,则不处理
        if (this.fListBox.Items.Count == 0 || this.fListBox.Items[this.fListBox.Items.Count - 1].Selected) return;
        for (int i = this.fListBox.Items.Count-1; i >-1 ; i--)
        {
            if (this.fListBox.Items[i].Selected)
                this.ChangeProperty(this.fListBox.Items[i], this.fListBox.Items[i+1]);
        }
    }

    private void ChangeProperty(ListItem fFront, ListItem fCurrent)
    {
        string fText = fFront.Text;
        string fValue = fFront.Value;
        bool fSelected = fFront.Selected;

        fFront.Text = fCurrent.Text;
        fFront.Value = fCurrent.Value;
        fFront.Selected = fCurrent.Selected;

        fCurrent.Text = fText;
        fCurrent.Value = fValue;
        fCurrent.Selected = fSelected;
    }
}

本文转载自:http://blog.csdn.net/smartsmile2012/article/details/11479955

深圳大道
粉丝 3
博文 877
码字总数 0
作品 0
深圳
架构师
私信 提问
分享几个令人震撼的JS和HTML5游戏

或许你对网页游戏仅仅停留在Flash的时代,认为只有Flash才能做出非常绚丽的游戏特效。那么今天就打破大家的这个观念,一起来看看用Javascript和HTML5实现的网页游戏,这些游戏个人认为做得已...

tp_wire
2012/06/27
24.4K
20
JavaScript 到底有多慢?

拜浏览器大战所赐,主流浏览器的 JS 引擎已经引入了各种优化技术,不时出现的某某浏览器性能大幅提升的新闻也让前端同学们信心倍增。那么 JS 这门语言本身是否已经达到了接近原生的水平呢? ...

doodlewind
2018/10/29
0
0
谷歌 Firebase Cloud Messaging 对多浏览器开放

近日,Google表示,正在将Firebase Cloud Messaging的Web支持扩展到Chrome以外的其他Web浏览器,包括Firefox和Opera。此举,由一个新的JavaScript库启用,将允许开发人员通过浏览器将推送通知...

王练
2016/11/01
2.3K
3
统治 Web 的 JavaScript 准备要接管桌面了

编者按:曾 几何时,通信网络曾经活跃过许多协议,那些协议在不同的场景下都有各自的优势。但是后来 TCP/IP 随着互联网的崛起而异军突起,最终形成一统天下的格局。而原本被视为不入流的 We...

oschina
2016/05/15
11K
48
JavaScript 开发者的 10 款必备工具

JavaScript,一种所有主流浏览器都支持的语言,是开发基于浏览器的 Web 应用程序的主力,几乎每年都会受到来自众多开发人员的关注。自然地,框架和库的生态系统自然而然地围绕着 JavaScript...

oschina
2017/10/19
2.5K
0

没有更多内容

加载失败,请刷新页面

加载更多

64.监控平台介绍 安装zabbix 忘记admin密码

19.1 Linux监控平台介绍 19.2 zabbix监控介绍 19.3/19.4/19.6 安装zabbix 19.5 忘记Admin密码如何做 19.1 Linux监控平台介绍: 常见开源监控软件 ~1.cacti、nagios、zabbix、smokeping、ope...

oschina130111
今天
9
0
当餐饮遇上大数据,嗯真香!

之前去开了一场会,主题是「餐饮领袖新零售峰会」。认真听完了餐饮前辈和新秀们的分享,觉得获益匪浅,把脑子里的核心纪要整理了一下,今天和大家做一个简单的分享,欢迎感兴趣的小伙伴一起交...

数澜科技
今天
7
0
DNS-over-HTTPS 的下一代是 DNS ON BLOCKCHAIN

本文作者:PETER LAI ,是 Diode 的区块链工程师。在进入软件开发领域之前,他主要是在做工商管理相关工作。Peter Lai 也是一位活跃的开源贡献者。目前,他正在与 Diode 团队一起开发基于区块...

红薯
今天
5
0
CC攻击带来的危害我们该如何防御?

随着网络的发展带给我们很多的便利,但是同时也带给我们一些网站安全问题,网络攻击就是常见的网站安全问题。其中作为站长最常见的就是CC攻击,CC攻击是网络攻击方式的一种,是一种比较常见的...

云漫网络Ruan
今天
11
0
实验分析性专业硕士提纲撰写要点

为什么您需要研究论文的提纲? 首先当您进行研究时,您需要聚集许多信息和想法,研究论文提纲可以较好地组织你的想法, 了解您研究资料的流畅度和程度。确保你写作时不会错过任何重要资料以此...

论文辅导员
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部