有时候刚好表中没有可以排序的字段,又不想修改表结构,但它的项文本有序号,这时就可以用这方法排序,例如: 

测试页Default2.aspx:
复制代码 代码如下:
 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
<title></title> 
</head> 
<body> 
<form runat="server"> 
<div> 
<asp:DropDownList runat="server"> 
</asp:DropDownList> 
<asp:Button runat="server" 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></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></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); 
} 
} 
} 
} 
您可能感兴趣的文章:
