【C#】【平时练习】将左边列表框(List)的内容(月份)添加到右边列表框。最终右侧显示的内容(月份)要保持一定顺序

Aspx - 点击查看代码
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm_Demo01.aspx.cs" Inherits="WebApplication_ListBox.WebForm_Demo01" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<style>
body {
margin:0;
padding:0;
border:0;
outline:none;
}
.faraway {
margin:10px;
padding:5px;
}
</style>
<link href="css/xrilang-locationLayout.css" rel="stylesheet" />
</head>
<body>
<form id="form1" runat="server" class="center-al">
<div class="div-block-online">
<div class="div-block-online border-r border-BlueBlackish">
<asp:ListBox ID="lbMonth1" runat="server" Height="200px" Width="100px" SelectionMode="Multiple">
<asp:ListItem Value="1">January</asp:ListItem>
<asp:ListItem Value="2">February</asp:ListItem>
<asp:ListItem Value="3">March</asp:ListItem>
<asp:ListItem Value="4">April</asp:ListItem>
<asp:ListItem Value="5">May</asp:ListItem>
<asp:ListItem Value="6">June</asp:ListItem>
<asp:ListItem Value="7">July</asp:ListItem>
<asp:ListItem Value="8">August</asp:ListItem>
<asp:ListItem Value="9">September</asp:ListItem>
<asp:ListItem Value="10">October</asp:ListItem>
<asp:ListItem Value="11">November</asp:ListItem>
<asp:ListItem Value="12">December</asp:ListItem>
</asp:ListBox>
</div>
<div class="div-block-online" style="height:200px">
<div class="faraway">
<asp:Button ID="Button1" runat="server" Text=">>>" OnClick="Button1_Click" class="border-Orange"/>
</div>
<br />
<div class="faraway">
<asp:Button ID="Button2" runat="server" Text="<<<" OnClick="Button2_Click" class="border-Orange" />
</div>
</div>
<div class="div-block-online border-r border-BlueBlackish">
<asp:ListBox ID="lbMonth2" runat="server" Height="200px" SelectionMode="Multiple" style="margin-top: 0px" Width="100px">
</asp:ListBox>
</div>
</div>
<p>
<asp:Button ID="btTest" runat="server" Text="查询" OnClick="btTest_Click" class="border-Orange"/>
</p>
<div class="div-block border-GreenBlackish">
<asp:Label ID="lblShow1" runat="server" Text=""></asp:Label>
</div>
<div class="div-block border-GreenBlackish">
<asp:Label ID="lblShow2" runat="server" Text="" ></asp:Label>
</div>
</form>
</body>
</html>
cs - 点击查看代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace WebApplication_ListBox
{
public partial class WebForm_Demo01 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//@萌狼蓝天-Test05
}
protected void Button1_Click(object sender, EventArgs e)
{
//下面的是老师的方法
if (lbMonth1.SelectedIndex > -1)
{
//把左侧选中项添加到右侧
//lbMonth2.Items.Add(lbMonth1.SelectedItem);
//lbMonth2.Items.Insert(0,lbMonth1.SelectedItem);
//2.1
//检查右侧所有项,确保插入项的Value按顺序位 int correctIndex
//2.2 在正确位置插入
//将排序计算划为单独的方法直接使用,后续直接优化方法算法即可。
lbMonth2.Items.Insert(OneToTwo(), lbMonth1.SelectedItem);
//3.在左侧列表框中删除选中项
lbMonth1.Items.RemoveAt(lbMonth1.SelectedIndex);
}else {
lblShow1.Text = "INDEX NOT > 0";
}
}
protected void Button2_Click(object sender, EventArgs e)
{
if (lbMonth2.SelectedIndex > -1)
{
lbMonth1.Items.Insert(TwoToOne(), lbMonth2.SelectedItem);
lbMonth2.Items.RemoveAt(lbMonth2.SelectedIndex);
}
else
{
lblShow1.Text = "INDEX NOT > 0";
}
}
/*
* 左边往右边添加
*/
protected int OneToTwo() {
int correctIndex = 0;
int valued = Int32.Parse(lbMonth1.SelectedItem.Value);
if (lbMonth2.Items.Count == 0){
return 0;
};
if (lbMonth2.Items.Count - 1 == 0) {
if (valued > textToValue(lbMonth2.Items[lbMonth2.Items.Count - 1].Value))
{
return lbMonth2.Items.Count;
}
else
{
return 0;
}
}
for (int i = 0; i < lbMonth2.Items.Count - 1; i++)
{
int valuei = textToValue(lbMonth2.Items[i].Value);
int valueii = textToValue(lbMonth2.Items[i + 1].Value);
//不大不小
if (valued > valuei & valued < valueii && valueii!=0)
{
correctIndex = i + 1;
lblShow1.Text = ("[" + i + "]C2(不大不小):" + valuei + "<[" + valued + "]<" + valueii);
break;
}
//最大,新增
else if (valued > textToValue(lbMonth2.Items[lbMonth2.Items.Count - 1].Value))
{
lblShow1.Text = ("[" + i + "]C2(最大新增):" + textToValue(lbMonth2.Items[lbMonth2.Items.Count - 1].Value) + "<[" + valued + "]");
correctIndex = lbMonth2.Items.Count;
break;
}
//最小,插入
else if (valued < textToValue(lbMonth2.Items[0].Value))
{
lblShow1.Text = ("[" + i + "]C2(最小新增):" + valued + "<" + textToValue(lbMonth2.Items[0].Value));
correctIndex = 0;
break;
}
else {
lblShow1.Text = "valued:"+valued+" | "+ lbMonth2.Items[lbMonth2.Items.Count - 1].Value;
}
}
return correctIndex;
}
protected int TwoToOne()
{
int correctIndex = 0;
int valued = Int32.Parse(lbMonth2.SelectedItem.Value);
if (lbMonth1.Items.Count == 0)
{
return 0;
};
if (lbMonth1.Items.Count - 1 == 0)
{
if (valued > textToValue(lbMonth1.Items[lbMonth1.Items.Count - 1].Value))
{
return lbMonth1.Items.Count;
}
else
{
return 0;
}
}
for (int i = 0; i < lbMonth1.Items.Count - 1; i++)
{
int valuei = textToValue(lbMonth1.Items[i].Value);
int valueii = textToValue(lbMonth1.Items[i + 1].Value);
//不大不小
if (valued > valuei & valued < valueii)
{
correctIndex = i + 1;
lblShow1.Text = ("[" + i + "]C2(不大不小):" + valuei + "<[" + valued + "]<" + valueii);
break;
}
//最大,新增
else if (valued > textToValue(lbMonth1.Items[lbMonth1.Items.Count - 1].Value))
{
lblShow1.Text = ("[" + i + "]C2(最大新增):" + textToValue(lbMonth1.Items[lbMonth1.Items.Count - 1].Value) + "<" + valued);
correctIndex = lbMonth1.Items.Count;
break;
}
//最小,插入
else if (valued < textToValue(lbMonth1.Items[0].Value))
{
lblShow1.Text = ("[" + i + "]C2(最小新增):" + valued + "<" + textToValue(lbMonth1.Items[0].Value));
correctIndex = 0;
break;
}
}
return correctIndex;
}
/**
* 将月份转为数值,方便进行比对排序
*/
protected int textToValue(String item)
{
lblShow2.Text = "方法被调用:" + item;
if (item == "1")
{
return 1;
}
else if (item == "2")
{
return 2;
}
else if (item == "3")
{
return 3;
}
else if (item == "4")
{
return 4;
}
else if (item == "5")
{
return 5;
}
else if (item == "6")
{
return 6;
}
else if (item == "7")
{
return 7;
}
else if (item == "8")
{
return 8;
}
else if (item == "9")
{
return 9;
}
else if (item == "10")
{
return 10;
}
else if (item == "11")
{
return 11;
}
else if (item == "12")
{
return 12;
}
return 0;
}
/**
* 测试专用
*/
protected void btTest_Click(object sender, EventArgs e)
{
lblShow1.Text = "[box1]" + "<br>" +
"[当前选择索引]:" + lbMonth1.SelectedIndex + "<br>" +
"[当前选择Value]:" + lbMonth1.SelectedValue + "<br>" +
"[当前选择item]" + lbMonth1.SelectedItem + "<br>" +
"[当前选择Mode]:" + lbMonth1.SelectionMode + "<br>"+
"[Count]:" + lbMonth1.Items.Count + "<br>";
lblShow2.Text = "[box2]" + "<br>" +
"[当前选择索引]:" + lbMonth2.SelectedIndex + "<br>" +
"[当前选择Value]:" + lbMonth2.SelectedValue + "<br>" +
"[当前选择item]" + lbMonth2.SelectedItem + "<br>" +
"[当前选择Mode]:" + lbMonth2.SelectionMode + "<br>"+
"[Count]:" + lbMonth2.Items.Count + "<br>";
}
}
}
【C#】【平时练习】将左边列表框(List)的内容(月份)添加到右边列表框。最终右侧显示的内容(月份)要保持一定顺序的更多相关文章
- JavaScript 下拉框 左边添加至右边
关于如何实现右边下拉框中选项的排序一时没有好的解决方法,等想到了回来补充 <!DOCTYPE html> <html> <head> <meta charse ...
- vuejs自定义过滤器根据搜索框输入的值,筛选复杂的列表数据
如题所示,自定义过滤器根据搜索框输入的值,筛选复杂的列表数据.如图所示: html代码: <input type="text" placeholder="姓名/账号 ...
- C# 生成月份及天选择列表,方便做下拉框联动
月份及天选择列表,很方便做下拉框联动 /// <summary> /// 获取月份选择列表(根据当前语言环境显示月份名称) /// </summary> private IEn ...
- jquery下拉框实现将左边的选项添加到右边区域
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 下拉框——把一个select框中选中内容移到另一个select框中遇到的问题
在使用jQuery实现把一个select框中选中内容移到另一个select框中功能时遇到了一个问题,就是点击按钮时内容可以到另一个select框中,但是到了另一个select框中的内容却很快闪退回原来 ...
- 向redis中添加删除list列表
转: 向redis中添加删除list列表 2018年04月18日 15:44:54 luo_yu_1106 阅读数:4082 一.添加 向redis中添加队列有两种方式 1.lpush l是lef ...
- 用户添加到sudoer列表## Allow root to run any commands anywhere root ALL=(ALL) ALL Iron ALL=(ALL) ALL
将用户添加到sudoer列表 李序锴关注 2017.12.20 15:03:25字数 605阅读 4,067 默认情况下,linux没有将当前用户列入到sudoer列表中(在redhat系列的linu ...
- C# GDI绘制矩形框,鼠标左键拖动可移动矩形框,滚轮放大缩小矩形框
最近工作需要,要做一个矩形框,并且 用鼠标左键拖动矩形框移动其位置.网上查了一些感觉他们做的挺复杂的.我自己研究一天,做了一个比较简单的,发表出来供大家参考一下.如觉得简单,可路过,谢谢.哈哈. 先大 ...
- MFC 编辑框中字体大小改变,行高不能改变,只能显示一半的问题,已解决。
CKagulaCEdit是CEdit的一个继承类,m_edit的CKagulaCEdit类型的一个变量 调用的时候,是这样的: 编辑框中字体大小改变,行高不能改变,只能显示一半的问题,问题如下: 这时 ...
- bootstrap模态框modal使用remote第二次加载显示相同内容解决办法
bootstrap模态框modal使用remote动态加载内容,第二次加载显示相同内容解决办法 bootstrap的modal中,使用remote可以动态加载页面到modal-body中,并弹窗显示 ...
随机推荐
- TEN Framework 入坑记
TL;DR TEN Framework 最初叫 Astra,后改为 TEN,即 Transformative Extensions Network. 我第一次见到 TEN (那时还叫 Astra)是在 ...
- Kubernetes的Pod调度:让你的应用像乘坐头等舱!
一.Kubernetes 中 Pod 调度的重要性 在 Kubernetes 的世界里,Pod 调度就像是一个繁忙的交通指挥官,负责把小车(也就是我们的 Pod)送到最合适的停车位(节点).调度不仅关 ...
- USB硬件特性(速度、名称、供电)
USB传输速度 USB1.0版本,USB LS(Low Speed低速),速度1.5Mbps. USB1.1版本,USB FS(Full Speed全速),速度12Mbps. USB2.0版本,USB ...
- Math 数学库
Math.random() 随机数字 Math.PI 圆周率
- 在 Ubuntu 22.04 上安装 KubeSphere 实战教程
作者:老 Z,中电信数智科技有限公司山东分公司运维架构师,云原生爱好者,目前专注于云原生运维,云原生领域技术栈涉及 Kubernetes.KubeSphere.DevOps.OpenStack.Ans ...
- javascript语法--for in、for of和forEach
首先看简单for循环效果,功能最基本,但可以实现所有循环功能 for (let i = 0; i < list.length; i++) { } 接下来看for in.for of和forEac ...
- C++ 加权随机抽样
在做五子棋 AI 的时候,遇到要根据权重从一组数里边随机选出一个这个问题.这个问题恰好也是 leetcode 第 528 道题,使用 C++,标准库就有现成的: #include <rand ...
- 蚂蚁图团队GraphRAG支持社区摘要——Token相比微软直降50%
今年5月份,我们在DB-GPT v0.5.6版本发布了蚂蚁首个开源GraphRAG框架,支持了多种知识库索引底座,并在文章<Vector | Graph:蚂蚁首个开源GraphRAG框架设计解读 ...
- CCF网站提供的资源
1. 电子刊物,如<CCF通讯> 实时更新:http://www.ccf.org.cn/dl/publications/ 过往期刊:http://history.ccf.org.cn/si ...
- iptables防火墙规则介绍与配置
防火墙简单介绍 防火墙根据什么对外网的进出数据流进行控制? 源IP.目标IP.源端口号.目标端口号.协议.指针位(SYN.FIN.ACK.RST).状态(NEW.ESTABLISHED.INVIAD) ...