代码如下:
private class RowComparer : System.Collections.IComparer
{
private static int sortOrderModifier = 1; public RowComparer(SortOrder sortOrder)
{
if (sortOrder == SortOrder.Descending)
{
sortOrderModifier = -1;
}
else if (sortOrder == SortOrder.Ascending)
{
sortOrderModifier = 1;
}
} public int Compare(object x, object y)
{
int CompareResult = 0;
DataGridViewRow DataGridViewRow1 = (DataGridViewRow)x;
DataGridViewRow DataGridViewRow2 = (DataGridViewRow)y; // Try to sort based on the Last Name column.
CompareResult = System.String.Compare(
DataGridViewRow1.Cells[1].Value.ToString(),
DataGridViewRow2.Cells[1].Value.ToString());
// If the Last Names are equal, sort based on the First Name.
if (CompareResult == 0)
{
CompareResult = System.String.Compare(
DataGridViewRow1.Cells[0].Value.ToString(),
DataGridViewRow2.Cells[0].Value.ToString());
}
return CompareResult * sortOrderModifier;
}
}
调用ColumnHeaderMouseClick事件
private void MeterList_dgv_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
this.MeterList_dgv.VirtualMode = false;
this.MeterList_dgv.Columns[e.ColumnIndex].SortMode = DataGridViewColumnSortMode.Programmatic;
this.MeterList_dgv.Sort(new RowComparer(SortOrder.Descending));
}
点击列表头出现如下错误:
Object reference not set to an instance of an object.( 指CompareResult = System.String.Compare(DataGridViewRow1.Cells[1].Value.ToString(),DataGridViewRow2.Cells[1].Value.ToString());出错)
跪求高手解决
private class RowComparer : System.Collections.IComparer
{
private static int sortOrderModifier = 1; public RowComparer(SortOrder sortOrder)
{
if (sortOrder == SortOrder.Descending)
{
sortOrderModifier = -1;
}
else if (sortOrder == SortOrder.Ascending)
{
sortOrderModifier = 1;
}
} public int Compare(object x, object y)
{
int CompareResult = 0;
DataGridViewRow DataGridViewRow1 = (DataGridViewRow)x;
DataGridViewRow DataGridViewRow2 = (DataGridViewRow)y; // Try to sort based on the Last Name column.
CompareResult = System.String.Compare(
DataGridViewRow1.Cells[1].Value.ToString(),
DataGridViewRow2.Cells[1].Value.ToString());
// If the Last Names are equal, sort based on the First Name.
if (CompareResult == 0)
{
CompareResult = System.String.Compare(
DataGridViewRow1.Cells[0].Value.ToString(),
DataGridViewRow2.Cells[0].Value.ToString());
}
return CompareResult * sortOrderModifier;
}
}
调用ColumnHeaderMouseClick事件
private void MeterList_dgv_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
this.MeterList_dgv.VirtualMode = false;
this.MeterList_dgv.Columns[e.ColumnIndex].SortMode = DataGridViewColumnSortMode.Programmatic;
this.MeterList_dgv.Sort(new RowComparer(SortOrder.Descending));
}
点击列表头出现如下错误:
Object reference not set to an instance of an object.( 指CompareResult = System.String.Compare(DataGridViewRow1.Cells[1].Value.ToString(),DataGridViewRow2.Cells[1].Value.ToString());出错)
跪求高手解决
这两个至少有一个 为null
比较前要判断