この次の例とは別に、ajax コンボ ボックスを並べ替える他の方法があるかどうか疑問に思っています。
Public Class ListItemComparer
Implements IComparer(Of ListItem)
Public Function Compare(ByVal x As ListItem, ByVal y As ListItem) As Integer _
Implements IComparer(Of ListItem).Compare
Dim c As New CaseInsensitiveComparer
Return c.Compare(x.Text, y.Text)
End Function
End Class
Public Shared Sub SortDropDown(ByVal cbo As AjaxControlToolkit.ComboBox)
Dim lstListItems As New List(Of ListItem)
For Each li As ListItem In cbo.Items
lstListItems.Add(li)
Next
lstListItems.Sort(New ListItemComparer)
cbo.Items.Clear()
cbo.Items.AddRange(lstListItems.ToArray)
End Sub
----------Binding and Sorting Combo-Box----------
ddlClients.DataTextField = "ClientName"
ddlClients.DataValueField = "ClientID"
ddlClients.DataBind()
SortDropDown(ddlClients)
SP では、Client Name で order by 句を使用していますが、どういうわけかコンボックスが ClientNames を順番にバインドしません。
プロジェクト内のさまざまな場所から呼び出すことができるように、この関数を CommonFunction クラスに配置するのが好きです。「AjaxControlToolkit.ComboBox」が原因で、BusinessLayer に上記の関数を追加できません。