我有一个Windows窗体datagridview.
理想情况:
用户点击九列中的任何一列,程序会对所有数据进行排序,如果点击的列包含数字,我希望顶部的数字最小.如果单击的列包含一个字符串,我希望它按字母顺序排序(AZ).
我现在拥有的:
我在Stack Overflow上看到了一个老问题,OP在点击"a"标题时如何对datagridview进行排序.与我的不同之处在于我希望我的datagridview可以通过九列中的任何一列进行排序.
我有这个代码,从我发现的问题中窃取:
dataGridView2.DataSource = listPlayers.Select(s => new { voornaam = s.Voornaam,
Achternaam = s.Achternaam,
positie = s.Positie,
Nationaltieit = s.Nationaliteit,
Leeftijd = s.Age,
Aanval = s.Aanval,
Verdediging = s.Verdediging,
Gemiddeld = s.Gemiddeld,
waarde = s.TransferWaarde })
.OrderBy(s => s.Achternaam)
.ToList();
foreach(DataGridViewColumn column in dataGridView2.Columns)
{
dataGridView2.Columns[column.Name].SortMode =
DataGridViewColumnSortMode.Automatic;
}
Run Code Online (Sandbox Code Playgroud)
这只允许用户在点击九列中的一列时通过"Achternaam"订购.我想要的是当用户点击Nationaliteit列时,数据按An排在最前面.每个专栏都是如此
这是列表播放器列表:
namespace SimulatorSimulator
{
class SpelerData
{
public string Voornaam { get; set; }
public string Achternaam { get; set; }
public string …Run Code Online (Sandbox Code Playgroud) 当我分配 a 的List<MyClass>toDataSource时DataGridView,当我单击列标题时,没有任何反应并且排序不起作用;但如果我使用 aDataTable作为数据源,则单击标题时排序工作完美。
问题是:应该使用哪种集合类型来启用排序,DataGridView就像DataTable单击列标题时一样?