Developer
Dropdownlist, Listbox Sorting With Linq
Angeleyes
2011. 7. 19. 22:22
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
이상 입니다.
감사합니다.