我的DataGridView gridFilasWindows 窗体应用程序中有一个包含两列的应用程序,第二列始终包含可以转换为整数的字符串。当我单击对其进行排序时,它被排序为字符串,结果如下:
1, 11, 2, 22
但我需要将其排序为整数,例如:
1, 2, 11, 22
我已经尝试了这个问题的所有答案,但没有一个奏效,顺便说一句,接受的答案,它没有奏效,因为SortCompare事件没有因此而被触发。
所以到目前为止我尝试的是添加 aColumnHeaderMouseClick并对其进行排序:
private void gridFilas_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
// this for loop has been added in a vain hope of converting all elements to integer to see if it works...
for (int i = 0; i < gridFilas.Rows.Count; i++)
{
string v = gridFilas.Rows[i].Cells[1].Value.ToString();
gridFilas.Rows[i].Cells[1].Value = Convert.ToInt32(v);
}
if (queuesSortedAscending)
{
gridFilas.Sort(gridFilas.Columns["Tamanho_Fila"], System.ComponentModel.ListSortDirection.Descending);
}
else
{
gridFilas.Sort(gridFilas.Columns["Tamanho_Fila"], System.ComponentModel.ListSortDirection.Ascending);
}
queuesSortedAscending = !queuesSortedAscending;
}
数据源在创建时设置(的构造函数Form):
dsComponentes = new DataSet();
// ... more code
gridFilas.DataSource = dsComponentes.Tables["Queue"];
每当我向 DataSource 添加新行时,我都会确保将其解析为 int:
DataRow qlinha = dsComponentes.Tables["Queue"].NewRow();
qlinha["Nome_Fila"] = process;
qlinha["Tamanho_Fila"] = Int32.Parse(status);
dsComponentes.Tables["Queue"].Rows.Add(qlinha);
我也尝试过事先更改列的数据类型:
dsComponentes.Tables["Queue"].Columns["Tamanho_Fila"].DataType = typeof(int);
所以,我不知道还能做什么,我只需要将它作为整数而不是字符串来排序。欢迎任何解决方案。