DropDownList根据下拉项的Text文本序号排序

 更新时间:2013年03月01日 10:19:45   作者:  
在某些时候表中没有可以排序的字段同时呢也不想修改表结构,但它的项文本有序号这时就可以用这方法排序,感兴趣的你可以参考下,或许本文知识点对你有所帮助
有时候刚好表中没有可以排序的字段,又不想修改表结构,但它的项文本有序号,这时就可以用这方法排序,例如:

测试页Default2.aspx:
复制代码 代码如下:

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:DropDownList runat="server" ID="ddlType">
</asp:DropDownList>
<asp:Button runat="server" ID="btnSort" onclick="btnSort_Click" Text="排序" />
</div>
</form>
</body>
</html>

Default2.aspx.cs:
复制代码 代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Text.RegularExpressions;
public partial class Default2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
ddlType.Items.Add(new ListItem("--请选择--"));
ddlType.Items.Add(new ListItem("2_bb"));
ddlType.Items.Add(new ListItem("1_aa"));
ddlType.Items.Add(new ListItem("4_ee"));
ddlType.Items.Add(new ListItem("3_dd"));
}
}
protected void btnSort_Click(object sender, EventArgs e)
{
DropDownListBubbleSort(ddlType);
//DropDownListSelectionSort(ddlType);
}
/// <summary>
/// 冒泡排序
/// </summary>
/// <param name="ddl"></param>
public void DropDownListBubbleSort(DropDownList ddl)
{
ListItem listItem = new ListItem();
for (int i = 0; i < ddl.Items.Count; i++)
{
for (int j = i + 1; j < ddl.Items.Count; j++)
{
int firstVal = 0, nextVal = 0;
int.TryParse(Regex.Replace(ddl.Items[i].Text, @"\D", @"", RegexOptions.IgnoreCase), out firstVal);
int.TryParse(Regex.Replace(ddl.Items[j].Text, @"\D", @"", RegexOptions.IgnoreCase), out nextVal);
if (firstVal == 0 || nextVal == 0)
continue;
if (firstVal > nextVal)
{
listItem = ddl.Items[j];
ddl.Items.Remove(ddl.Items[j]);
ddl.Items.Insert(i, listItem);
}
}
}
}
/// <summary>
/// 选择排序
/// </summary>
/// <param name="ddl"></param>
public void DropDownListSelectionSort(DropDownList ddl)
{
ListItem listItem = new ListItem();
int length = ddl.Items.Count;
for (int i = 0; i < length; i++)
{
int min = 0;
int.TryParse(Regex.Replace(ddl.Items[i].Text, @"\D", @"", RegexOptions.IgnoreCase), out min);
if (min == 0)
continue;
int minIndex = i;
for (int j = i + 1; j < length; j++)
{
int nextVal = 0;
int.TryParse(Regex.Replace(ddl.Items[j].Text, @"\D", @"", RegexOptions.IgnoreCase), out nextVal);
if (nextVal == 0)
continue;
if (min > nextVal)
{
min = nextVal;
minIndex = j;
}
}
if (minIndex != i)
{
listItem = ddl.Items[minIndex];
ddl.Items.Remove(ddl.Items[minIndex]);
ddl.Items.Insert(i, listItem);
}
}
}
}

相关文章

  • ASP.NET中iframe框架点击左边页面链接 右边显示链接页面内容

    ASP.NET中iframe框架点击左边页面链接 右边显示链接页面内容

    这篇文章主要介绍了ASP.NET中iframe框架点击左边页面链接,右边显示链接页面内容的实现代码,感兴趣的小伙伴们可以参考一下
    2016-07-07
  • 在.NET Core中使用异步编程的方法步骤

    在.NET Core中使用异步编程的方法步骤

    这篇文章主要介绍了在.NET Core中使用异步编程的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • .NET6 ConfigurationManager的实现及使用方式

    .NET6 ConfigurationManager的实现及使用方式

    这篇文章主要介绍了.NET6 ConfigurationManager的实现,我们上面展示的这一部分的ConfigurationManager代码,其实就是替代了原来的ConfigurationBuilder类的功能,需要的朋友可以参考下
    2021-12-12
  • 详解最好的.NET开源免费ZIP库DotNetZip(.NET组件介绍之三)

    详解最好的.NET开源免费ZIP库DotNetZip(.NET组件介绍之三)

    本篇文章主要介绍了.NET开源免费ZIP库DotNetZip组件的介绍,可以实现对文件的压缩和解压,有兴趣的朋友可以了解一下。
    2016-12-12
  • .NET 6 跨服务器联表查询操作MySql、Oracle、SqlServer等相互联表

    .NET 6 跨服务器联表查询操作MySql、Oracle、SqlServer等相互联表

    这篇文章主要介绍了.NET 6 跨服务器联表查询, MySql、Oracle、SqlServer等相互联表,在这里给大家普及下什么是多库架构ORM就是说一个对象可以同时操作和管理多个数据库 我们称为多库架构,本文结合实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2022-10-10
  • .NET Core中HttpClient的正确打开方式

    .NET Core中HttpClient的正确打开方式

    这篇文章主要给大家介绍了关于.NET Core中HttpClient的正确打开方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-01-01
  • 浅析常用分词算法的比较与设想

    浅析常用分词算法的比较与设想

    这篇文章介绍了常用分词算法的比较与设想,有需要的朋友可以参考一下
    2013-10-10
  • WinForm中如何预览Office文件

    WinForm中如何预览Office文件

    这篇文章主要为大家详细介绍了WinForm中如何预览Office文件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-10-10
  • ASP.NET Forms身份认证

    ASP.NET Forms身份认证

    asp.net程序中,用户可以根据角色访问对应页面以及功能。本文将对此进行介绍,具有很好的参考价值,下面跟着小编一起来看下吧
    2017-02-02
  • ASP.NET Core 2.2中的Endpoint路由详解

    ASP.NET Core 2.2中的Endpoint路由详解

    这篇文章主要介绍了ASP.NET Core 2.2中的Endpoint路由详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-03-03

最新评论