使用VS2008,C#和.NET 3.5
我正在使用数据绑定DataGridView控件来显示从Web服务读取的表格数据。在某些情况下,需要对数字列进行排序。我已尝试了几种不同的方法来实现这一点,但该列仍然按字母顺序排序(即1,10,2,3而不是1,2,3,10)。
将列数据类型设置为int对数据绑定控件不起作用,因此唯一真正的方法是提供一些自定义排序逻辑。
许多人建议连接到SortCompare事件以提供自定义排序逻辑,但由于某种原因,事件代码永远不会运行 - 我可以在处理程序中放置一个断点,它永远不会到达那里。我通过GUI添加事件处理程序,因此处理程序由VS添加到控件中,而不是手动添加。
这是事件处理程序代码,从这里的某个地方解除:
private void uxLicensedSoftwareDataGridView_SortCompare( object sender,
DataGridViewSortCompareEventArgs e )
{
int intValue1, intValue2;
if ( !Int32.TryParse( e.CellValue1.ToString(), out intValue1 ) )
return;
if ( !Int32.TryParse( e.CellValue2.ToString(), out intValue2 ) )
return;
if ( intValue1 == intValue2 )
e.SortResult = 0;
else if ( intValue1 < intValue2 )
e.SortResult = -1;
else
e.SortResult = 1;
e.Handled = true;
}
如果这被解雇了,它将完全按照我的意愿行事。我能错过什么?
感谢指出(希望)显而易见...... 戴夫
答案 0 :(得分:7)
答案 1 :(得分:3)
当DataGridView是数据绑定时,数据源也可以进行排序。
一些数据源已内置支持排序。您的数据源实现IBindingList或IBindingListView排序属性和方法,以各种方式对数据源进行排序。