我有一个Windows窗体与datagridview
。使所有datagridview列可排序
理想的情况:
用户点击任何的九列的,并且程序排序的所有数据,如果单击列包含数字,我想在顶部的最低数量。如果点击的列包含一个字符串,我希望它按字母顺序排序(A-Z)。
我有什么权利现在:
我看到了一个老问题上堆栈溢出,其中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;
}
这只能通过“Achternaam”让用户订单时,他点击了九列的一个。我想要的是,当用户点击Nationaliteit列时,数据会被An排序。依此类推,每列
这是listplayers列表:
namespace SimulatorSimulator
{
class SpelerData
{
public string Voornaam { get; set; }
public string Achternaam { get; set; }
public string Positie { get; set; }
public string Nationaliteit { get; set; }
public int Age { get; set; }
public int Aanval { get; set; }
public int Verdediging { get; set; }
public int Gemiddeld { get; set; }
public string TransferWaarde { get; set; }
}
}
,并在主类:
List<SpelerData> listPlayers = new List<SpelerData>();
一些假数据:
Romelu;Lukaku;Aanvaller;Belgie;22;87;12;50;41.000.000,00
Raheem ;Sterling;Aanvaller;Engeland;21;84;30;57;35.000.000,00
Zlatan ;Ibrahimovic;Aanvaller;Zweden;34;87;21;54;34.500.000,00
@KevinTinnemans请认真考虑Ivan Stoev对Ian回答的评论。我可能会因为这样说而惹火,而且自从我发布自己的答案之后,这可能会被误解,但接受的答案无法帮助您以任何方式成为更好的开发人员。蛮力是一个跳跃点,当你不能提出更好的解决方案时,你会回避到这个问题上 - 对于这个问题有几个问题。这将导致不好的做法和难以管理的代码。 –