ListView - Sorting and the Delta Symbol

  • Thread starter Thread starter Brian Reed
  • Start date Start date
B

Brian Reed

Before I start writing code to perform the owner draw on the list view, is
there a way to get the default List View control to draw the carot/delta
symbol showing which way the data is sorted? Thanks

Brian
 
Hello Brian,

There is a Microsoft Knowledge Article (KB) describing it in detailed. You
may get it from the link below:

HOW TO: Sort a ListView Control by a Column in Visual C# .NET (Q319401)
http://support.microsoft.com/default.aspx?scid=kb;EN-US;q319401

For your convenience, I have pasted a snip of code here:

using System.Collections;
using System.Windows.Forms;

/// <summary>
/// This class is an implementation of the 'IComparer' interface.
/// </summary>
public class ListViewColumnSorter : IComparer
{
/// <summary>
/// Specifies the column to be sorted
/// </summary>
private int ColumnToSort;
/// <summary>
/// Specifies the order in which to sort (i.e. 'Ascending').
/// </summary>
private SortOrder OrderOfSort;
/// <summary>
/// Case insensitive comparer object
/// </summary>
private CaseInsensitiveComparer ObjectCompare;

/// <summary>
/// Class constructor. Initializes various elements
/// </summary>
public ListViewColumnSorter()
{
// Initialize the column to '0'
ColumnToSort = 0;

// Initialize the sort order to 'none'
OrderOfSort = SortOrder.None;

// Initialize the CaseInsensitiveComparer object
ObjectCompare = new CaseInsensitiveComparer();
}

/// <summary>
/// This method is inherited from the IComparer interface. It compares
the two objects passed using a case insensitive comparison.
/// </summary>
/// <param name="x">First object to be compared</param>
/// <param name="y">Second object to be compared</param>
/// <returns>The result of the comparison. "0" if equal, negative if 'x'
is less than 'y' and positive if 'x' is greater than 'y'</returns>
public int Compare(object x, object y)
{
int compareResult;
ListViewItem listviewX, listviewY;

// Cast the objects to be compared to ListViewItem objects
listviewX = (ListViewItem)x;
listviewY = (ListViewItem)y;

// Compare the two items
compareResult =
ObjectCompare.Compare(listviewX.SubItems[ColumnToSort].Text,listviewY.SubIte
ms[ColumnToSort].Text);

// Calculate correct return value based on object comparison
if (OrderOfSort == SortOrder.Ascending)
{
// Ascending sort is selected, return normal result of compare operation
return compareResult;
}
else if (OrderOfSort == SortOrder.Descending)
{
// Descending sort is selected, return negative result of compare
operation
return (-compareResult);
}
else
{
// Return '0' to indicate they are equal
return 0;
}
}

/// <summary>
/// Gets or sets the number of the column to which to apply the sorting
operation (Defaults to '0').
/// </summary>
public int SortColumn
{
set
{
ColumnToSort = value;
}
get
{
return ColumnToSort;
}
}

/// <summary>
/// Gets or sets the order of sorting to apply (for example, 'Ascending'
or 'Descending').
/// </summary>
public SortOrder Order
{
set
{
OrderOfSort = value;
}
get
{
return OrderOfSort;
}
}
}

I hope this is helpful.

Best regards,

Lion Shi [MSFT]
MCSE, MCSD
Microsoft Support Engineer
Get Secure! ¨C www.microsoft.com/security

This posting is provided "AS IS" with no warranties, and confers no rights.
You assume all risk for your use. 2003 Microsoft Corporation. All rights
reserved.
--------------------
| From: "Brian Reed" <[email protected]>
| Subject: ListView - Sorting and the Delta Symbol
| Date: Tue, 16 Sep 2003 11:21:13 -0700
| Lines: 8
| X-Priority: 3
| X-MSMail-Priority: Normal
| X-Newsreader: Microsoft Outlook Express 6.00.2800.1158
| X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
| Message-ID: <[email protected]>
| Newsgroups: microsoft.public.dotnet.framework.windowsforms
| NNTP-Posting-Host: 66.166.27.66
| Path:
cpmsftngxa07.phx.gbl!cpmsftngxa10.phx.gbl!TK2MSFTNGXA05.phx.gbl!TK2MSFTNGP08
phx.gbl!tk2msftngp13.phx.gbl
| Xref: cpmsftngxa07.phx.gbl
microsoft.public.dotnet.framework.windowsforms:52362
| X-Tomcat-NG: microsoft.public.dotnet.framework.windowsforms
|
| Before I start writing code to perform the owner draw on the list view, is
| there a way to get the default List View control to draw the carot/delta
| symbol showing which way the data is sorted? Thanks
|
| Brian
|
|
|
|
 
I have the sorting code down. I just want the list view to draw the little
delta/carot symbol at the top of the sorted column.


Lion Shi said:
Hello Brian,

There is a Microsoft Knowledge Article (KB) describing it in detailed. You
may get it from the link below:

HOW TO: Sort a ListView Control by a Column in Visual C# .NET (Q319401)
http://support.microsoft.com/default.aspx?scid=kb;EN-US;q319401

For your convenience, I have pasted a snip of code here:

using System.Collections;
using System.Windows.Forms;

/// <summary>
/// This class is an implementation of the 'IComparer' interface.
/// </summary>
public class ListViewColumnSorter : IComparer
{
/// <summary>
/// Specifies the column to be sorted
/// </summary>
private int ColumnToSort;
/// <summary>
/// Specifies the order in which to sort (i.e. 'Ascending').
/// </summary>
private SortOrder OrderOfSort;
/// <summary>
/// Case insensitive comparer object
/// </summary>
private CaseInsensitiveComparer ObjectCompare;

/// <summary>
/// Class constructor. Initializes various elements
/// </summary>
public ListViewColumnSorter()
{
// Initialize the column to '0'
ColumnToSort = 0;

// Initialize the sort order to 'none'
OrderOfSort = SortOrder.None;

// Initialize the CaseInsensitiveComparer object
ObjectCompare = new CaseInsensitiveComparer();
}

/// <summary>
/// This method is inherited from the IComparer interface. It compares
the two objects passed using a case insensitive comparison.
/// </summary>
/// <param name="x">First object to be compared</param>
/// <param name="y">Second object to be compared</param>
/// <returns>The result of the comparison. "0" if equal, negative if 'x'
is less than 'y' and positive if 'x' is greater than 'y'</returns>
public int Compare(object x, object y)
{
int compareResult;
ListViewItem listviewX, listviewY;

// Cast the objects to be compared to ListViewItem objects
listviewX = (ListViewItem)x;
listviewY = (ListViewItem)y;

// Compare the two items
compareResult =
ObjectCompare.Compare(listviewX.SubItems[ColumnToSort].Text,listviewY.SubIte
ms[ColumnToSort].Text);

// Calculate correct return value based on object comparison
if (OrderOfSort == SortOrder.Ascending)
{
// Ascending sort is selected, return normal result of compare operation
return compareResult;
}
else if (OrderOfSort == SortOrder.Descending)
{
// Descending sort is selected, return negative result of compare
operation
return (-compareResult);
}
else
{
// Return '0' to indicate they are equal
return 0;
}
}

/// <summary>
/// Gets or sets the number of the column to which to apply the sorting
operation (Defaults to '0').
/// </summary>
public int SortColumn
{
set
{
ColumnToSort = value;
}
get
{
return ColumnToSort;
}
}

/// <summary>
/// Gets or sets the order of sorting to apply (for example, 'Ascending'
or 'Descending').
/// </summary>
public SortOrder Order
{
set
{
OrderOfSort = value;
}
get
{
return OrderOfSort;
}
}
}

I hope this is helpful.

Best regards,

Lion Shi [MSFT]
MCSE, MCSD
Microsoft Support Engineer
Get Secure! ¨C www.microsoft.com/security

This posting is provided "AS IS" with no warranties, and confers no rights.
You assume all risk for your use. 2003 Microsoft Corporation. All rights
reserved.
--------------------
| From: "Brian Reed" <[email protected]>
| Subject: ListView - Sorting and the Delta Symbol
| Date: Tue, 16 Sep 2003 11:21:13 -0700
| Lines: 8
| X-Priority: 3
| X-MSMail-Priority: Normal
| X-Newsreader: Microsoft Outlook Express 6.00.2800.1158
| X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
| Message-ID: <[email protected]>
| Newsgroups: microsoft.public.dotnet.framework.windowsforms
| NNTP-Posting-Host: 66.166.27.66
| Path:
cpmsftngxa07.phx.gbl!cpmsftngxa10.phx.gbl!TK2MSFTNGXA05.phx.gbl!TK2MSFTNGP08
phx.gbl!tk2msftngp13.phx.gbl
| Xref: cpmsftngxa07.phx.gbl
microsoft.public.dotnet.framework.windowsforms:52362
| X-Tomcat-NG: microsoft.public.dotnet.framework.windowsforms
|
| Before I start writing code to perform the owner draw on the list view, is
| there a way to get the default List View control to draw the carot/delta
| symbol showing which way the data is sorted? Thanks
|
| Brian
|
|
|
|
 
Hello Brian,

Sorry for misunderstanding your word. But I think the only way to do that,
is to draw it by the code.

Best regards,

Lion Shi [MSFT]
MCSE, MCSD
Microsoft Support Engineer
Get Secure! ¨C www.microsoft.com/security

This posting is provided "AS IS" with no warranties, and confers no rights.
You assume all risk for your use. 2003 Microsoft Corporation. All rights
reserved.
--------------------
| From: "Brian Reed" <[email protected]>
| References: <[email protected]>
<2R#[email protected]>
| Subject: Re: ListView - Sorting and the Delta Symbol
| Date: Wed, 17 Sep 2003 11:17:45 -0700
| Lines: 174
| X-Priority: 3
| X-MSMail-Priority: Normal
| X-Newsreader: Microsoft Outlook Express 6.00.2800.1158
| X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
| Message-ID: <[email protected]>
| Newsgroups: microsoft.public.dotnet.framework.windowsforms
| NNTP-Posting-Host: 66.166.27.66
| Path: cpmsftngxa06.phx.gbl!TK2MSFTNGP08.phx.gbl!TK2MSFTNGP12.phx.gbl
| Xref: cpmsftngxa06.phx.gbl
microsoft.public.dotnet.framework.windowsforms:52612
| X-Tomcat-NG: microsoft.public.dotnet.framework.windowsforms
|
| I have the sorting code down. I just want the list view to draw the little
| delta/carot symbol at the top of the sorted column.
|
|
| | > Hello Brian,
| >
| > There is a Microsoft Knowledge Article (KB) describing it in detailed.
You
| > may get it from the link below:
| >
| > HOW TO: Sort a ListView Control by a Column in Visual C# .NET (Q319401)
| > http://support.microsoft.com/default.aspx?scid=kb;EN-US;q319401
| >
| > For your convenience, I have pasted a snip of code here:
| >
| > using System.Collections;
| > using System.Windows.Forms;
| >
| > /// <summary>
| > /// This class is an implementation of the 'IComparer' interface.
| > /// </summary>
| > public class ListViewColumnSorter : IComparer
| > {
| > /// <summary>
| > /// Specifies the column to be sorted
| > /// </summary>
| > private int ColumnToSort;
| > /// <summary>
| > /// Specifies the order in which to sort (i.e. 'Ascending').
| > /// </summary>
| > private SortOrder OrderOfSort;
| > /// <summary>
| > /// Case insensitive comparer object
| > /// </summary>
| > private CaseInsensitiveComparer ObjectCompare;
| >
| > /// <summary>
| > /// Class constructor. Initializes various elements
| > /// </summary>
| > public ListViewColumnSorter()
| > {
| > // Initialize the column to '0'
| > ColumnToSort = 0;
| >
| > // Initialize the sort order to 'none'
| > OrderOfSort = SortOrder.None;
| >
| > // Initialize the CaseInsensitiveComparer object
| > ObjectCompare = new CaseInsensitiveComparer();
| > }
| >
| > /// <summary>
| > /// This method is inherited from the IComparer interface. It compares
| > the two objects passed using a case insensitive comparison.
| > /// </summary>
| > /// <param name="x">First object to be compared</param>
| > /// <param name="y">Second object to be compared</param>
| > /// <returns>The result of the comparison. "0" if equal, negative if
'x'
| > is less than 'y' and positive if 'x' is greater than 'y'</returns>
| > public int Compare(object x, object y)
| > {
| > int compareResult;
| > ListViewItem listviewX, listviewY;
| >
| > // Cast the objects to be compared to ListViewItem objects
| > listviewX = (ListViewItem)x;
| > listviewY = (ListViewItem)y;
| >
| > // Compare the two items
| > compareResult =
| >
|
ObjectCompare.Compare(listviewX.SubItems[ColumnToSort].Text,listviewY.SubIte
| > ms[ColumnToSort].Text);
| >
| > // Calculate correct return value based on object comparison
| > if (OrderOfSort == SortOrder.Ascending)
| > {
| > // Ascending sort is selected, return normal result of compare
| operation
| > return compareResult;
| > }
| > else if (OrderOfSort == SortOrder.Descending)
| > {
| > // Descending sort is selected, return negative result of compare
| > operation
| > return (-compareResult);
| > }
| > else
| > {
| > // Return '0' to indicate they are equal
| > return 0;
| > }
| > }
| >
| > /// <summary>
| > /// Gets or sets the number of the column to which to apply the sorting
| > operation (Defaults to '0').
| > /// </summary>
| > public int SortColumn
| > {
| > set
| > {
| > ColumnToSort = value;
| > }
| > get
| > {
| > return ColumnToSort;
| > }
| > }
| >
| > /// <summary>
| > /// Gets or sets the order of sorting to apply (for example,
'Ascending'
| > or 'Descending').
| > /// </summary>
| > public SortOrder Order
| > {
| > set
| > {
| > OrderOfSort = value;
| > }
| > get
| > {
| > return OrderOfSort;
| > }
| > }
| > }
| >
| > I hope this is helpful.
| >
| > Best regards,
| >
| > Lion Shi [MSFT]
| > MCSE, MCSD
| > Microsoft Support Engineer
| > Get Secure! ¨C www.microsoft.com/security
| >
| > This posting is provided "AS IS" with no warranties, and confers no
| rights.
| > You assume all risk for your use. 2003 Microsoft Corporation. All
rights
| > reserved.
| > --------------------
| > | From: "Brian Reed" <[email protected]>
| > | Subject: ListView - Sorting and the Delta Symbol
| > | Date: Tue, 16 Sep 2003 11:21:13 -0700
| > | Lines: 8
| > | X-Priority: 3
| > | X-MSMail-Priority: Normal
| > | X-Newsreader: Microsoft Outlook Express 6.00.2800.1158
| > | X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
| > | Message-ID: <[email protected]>
| > | Newsgroups: microsoft.public.dotnet.framework.windowsforms
| > | NNTP-Posting-Host: 66.166.27.66
| > | Path:
| >
|
cpmsftngxa07.phx.gbl!cpmsftngxa10.phx.gbl!TK2MSFTNGXA05.phx.gbl!TK2MSFTNGP08
| > phx.gbl!tk2msftngp13.phx.gbl
| > | Xref: cpmsftngxa07.phx.gbl
| > microsoft.public.dotnet.framework.windowsforms:52362
| > | X-Tomcat-NG: microsoft.public.dotnet.framework.windowsforms
| > |
| > | Before I start writing code to perform the owner draw on the list
view,
| is
| > | there a way to get the default List View control to draw the
carot/delta
| > | symbol showing which way the data is sorted? Thanks
| > |
| > | Brian
| > |
| > |
| > |
| > |
| >
|
|
|
 
Back
Top