asp.net 在listbox中实现上移、下移、置顶、置底效果
先看效果:
这个问题是我女朋友问我的,她学的是VB,我自己尝试用asp.net来完成,在同学的帮助下完成了.
具体实现大家可以看下面代码;
default2.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>
<!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>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ListBox ID="ListBox1" runat="server" SelectionMode="Multiple">
<asp:ListItem Value="0">苹果</asp:ListItem>
<asp:ListItem Value="1">荔汁</asp:ListItem>
<asp:ListItem Value="2">桃子</asp:ListItem>
<asp:ListItem Value="3">里</asp:ListItem>
</asp:ListBox>
<br />
<br />
<asp:Button ID="Button1" runat="server" Text="置顶" OnClick="Button1_Click" /><br />
<br />
<asp:Button ID="btnUp" runat="server" Text="上移" OnClick="btnUp_Click" /><br />
<br />
<asp:Button ID="btnDown" runat="server" Text="下移" OnClick="btnDown_Click" /><br />
<br />
<asp:Button ID="Button2" runat="server" Text="置底" OnClick="Button2_Click" /><br />
</div>
</form>
</body>
</html>
default2.aspx.cs
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class Default2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
this.ListBox1.SelectedIndex = 0;
}
}
protected string getSelectedValue()
{
return this.ListBox1.SelectedItem.Value;
}
protected string getSelectedText()
{
return this.ListBox1.SelectedItem.Text;
}
protected void btnUp_Click(object sender, EventArgs e)
{
if (this.ListBox1.SelectedIndex > 0)
{
string newValue = getSelectedValue();
string newText = getSelectedText();
//获取当前索引号
int newIndex = this.ListBox1.SelectedIndex;
//交换位置
this.ListBox1.SelectedItem.Value = this.ListBox1.Items[newIndex - 1].Value;
this.ListBox1.SelectedItem.Text = this.ListBox1.Items[newIndex - 1].Text;
this.ListBox1.Items[newIndex - 1].Value = newValue;
this.ListBox1.Items[newIndex - 1].Text = newText;
//设定上一项为当前项
this.ListBox1.SelectedIndex--;
}
else
{
Response.Write("<script>alert('超出');</script>");
}
}
protected void btnDown_Click(object sender, EventArgs e)
{
if (this.ListBox1.SelectedIndex < this.ListBox1.Items.Count - 1)
{
string newValue = getSelectedValue();
string newText = getSelectedText();
//获取当前索引号
int newIndex = this.ListBox1.SelectedIndex;
//交换位置
this.ListBox1.SelectedItem.Value = this.ListBox1.Items[newIndex + 1].Value;
this.ListBox1.SelectedItem.Text = this.ListBox1.Items[newIndex + 1].Text;
this.ListBox1.Items[newIndex + 1].Value = newValue;
this.ListBox1.Items[newIndex + 1].Text = newText;
//设定下一页为当前页
this.ListBox1.SelectedIndex++;
}
else
{
Response.Write("<script>alert('超出');</script>");
}
}
protected void Button1_Click(object sender, EventArgs e)
{
string newValue = getSelectedValue();
string newText = getSelectedText();
//获取当前选中的索引
int newIndex = this.ListBox1.SelectedIndex;
for(int i = newIndex - 1;i >= 0;i --)
{
this.ListBox1.Items[i + 1].Text = this.ListBox1.Items[i].Text;
this.ListBox1.Items[i + 1].Value = this.ListBox1.Items[i].Value;
}
this.ListBox1.Items[0].Value = newValue;
this.ListBox1.Items[0].Text = newText;
this.ListBox1.SelectedIndex = 0;
}
protected void Button2_Click(object sender, EventArgs e)
{
string newValue = getSelectedValue();
string newText = getSelectedText();
//获取当前选中的索引
int newIndex = this.ListBox1.SelectedIndex;
//获取总的数目
int newCount = this.ListBox1.Items.Count;
for (int i = newIndex; i < newCount - 1; i++)
{
this.ListBox1.Items[i].Text = this.ListBox1.Items[i + 1].Text;
this.ListBox1.Items[i].Value = this.ListBox1.Items[i + 1].Value;
}
this.ListBox1.Items[newCount-1].Value = newValue;
this.ListBox1.Items[newCount-1].Text = newText;
this.ListBox1.SelectedIndex = newCount-1;
}
}