如何自定义Datagridview排序这样

时间:2016-02-04 11:41:48

标签: c# asp.net windows winforms

我有一个带有列值的Windows Datagridview

id
---
0
0
0
5
2
7

我想要提升这种类型但是零容器将会被淘汰。 像这样 -

2
5
7
0
0
0

2 个答案:

答案 0 :(得分:0)

由于您没有提到DataGridView的数据源,因此我展示了一个集合的方法。例如,使用int[],但它适用于所有:

int[] collection = { 0, 0, 0, 5, 2, 7 };
int[] ordered = collection.OrderBy(i => i == 0).ThenBy(i => i).ToArray();

这是有效的,因为第一个OrderBy使用的比较可以是truefalse。由于truefalse“更高”,所以非{0}首先出现。 ThenBy用于非零组的内部排序。

如果这太抽象,也许你会发现它更具可读性:

int[] ordered = collection.OrderBy(i => i != 0 ? 0 : 1).ThenBy(i => i).ToArray();

答案 1 :(得分:0)

如果您没有为网格使用数据源,那么您可以使用此类DataGridView.SortCompare事件

@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
    case MotionEvent.ACTION_DOWN:
    case MotionEvent.ACTION_HOVER_ENTER:
    //Your Code
    break;
    case MotionEvent.ACTION_MOVE:
    case MotionEvent.ACTION_HOVER_MOVE:
    //Your Code
    break;
    case MotionEvent.ACTION_UP:
    case MotionEvent.ACTION_HOVER_EXIT:
    //Your Code
    break;    

}

return true;
}

不要忘记将事件处理程序附加到网格视图。