본문 바로가기

CSharp/Development

Dropdownlist, Listbox Sorting With Linq

ListItemCollection Sorting 방법

 

허무하다 싶을 정도로 간단하다 *_*;;

 

오랜만에 쓰는 포스팅.. ㅋ

 

// Ascending
ddlFirstClockSetting.DataSource = ddlFirstClockSetting.Items.Cast<ListItem>().OrderBy(o => o.Text).ToList();
ddlFirstClockSetting.DataBind();

// Descending
ddlFirstClockSetting.DataSource = ddlFirstClockSetting.Items.Cast<ListItem>().OrderByDescending(o => o.Text).ToList();
ddlFirstClockSetting.DataBind();

 

날로 먹는 포스팅 ㅡ.ㅡ;;

 

여기서 중요한 것은

using System.Linq;


헌데 결정적인 문제가 있습니다.
바로 Value에 대해서는 처리가 안됩니다.
Value가 있는 경우에는 Value Data가 삭제 됩니다.

위의 Linq 처리 방식은 이게 문제점입니다. *_*;;;;;;;;

for문을 돌면서 Sorting을 해 줘야 Value 까지 다 잘 살아 있습니다.

코드는 아래와 같습니다.

#region SortDropDownList
/// 
/// method to sort a DropDownList
/// 
/// DropDownList to sort
public void SortDropDownList(DropDownList ddl)
{
	ListItem[] sorted = new ListItem[ddl.Items.Count];
	for (int i = 0; i < sorted.Length; i++)
	{
		Array.Resize(ref sorted, i);
		sorted[i] = ddl.Items[i];
	}

	Array.Sort(sorted);

	ddl.Items.Clear();
	ddl.Items.AddRange(sorted);
}
#endregion



이상 입니다.
감사합니다.