我有一个包含3列的datagridview。但是我还没有将数据源绑定到datagridview。它有三列。
EmpName、InTime、OutTime
我可以在datagridview中编辑EmpName。
我想在编辑行后对datagridview中的内容进行排序。
我想先按EmpName排序,然后按InTime排序。时间采用AM、PM时间格式(例如:下午2:00 )。
我只能按一列对数据进行排序。我用过,
dgvSchedule.Sort(dgvSchedule.Columns[0],ListSortDirection.Ascending);而是如何按多列排序。特别是当时间是AM PM格式时。请帮帮我。
提前谢谢。
发布于 2014-02-12 21:20:59
以某种方式实现IComparer:
private class CustomComparer : IComparer
{
private static int SortOrder = 1;
public CustomComparer(SortOrder sortOrder)
{
SortOrder = sortOrder == SortOrder.Ascending ? 1 : -1;
}
public int Compare(object x, object y)
{
DataGridViewRow row1 = (DataGridViewRow)x;
DataGridViewRow row2 = (DataGridViewRow)y;
int result = row1.Cells["EmpName"].Value.ToString().CompareTo(
row2.Cells["EmpName"].Value.ToString());
if ( result == 0 )
{
result = DateTime.ParseExact(
row1.Cells["InTime"].Value.ToString(),
"h:mm tt",
CultureInfo.InvariantCulture).TimeOfDay
.CompareTo(
DateTime.ParseExact(
row2.Cells["InTime"].Value.ToString(),
"h:mm tt",
CultureInfo.InvariantCulture).TimeOfDay);
}
return result * SortOrder;
}用法为:
dgvSchedule.Sort(new CustomComparer(ListSortDirection.Ascending));https://stackoverflow.com/questions/21728420
复制相似问题