Sortieren im DataGridView

19/12/2009 - 10:12 von Christoph Engelhardt | Report spam
Hallo NG,

ich fülle ein DataGridView mit folgendem Code:

************************************************************************************************************************
dataGridView1.AutoGenerateColumns = false;

dataGridView1.Columns.Add(new DataGridViewTextBoxColumn()
{
HeaderText = "pockets",
Name = "columnPocketCards",
DataPropertyName = "Pockets",
MinimumWidth = 70,
Width = 70,
Resizable = DataGridViewTriState.False
});

dataGridView1.Columns.Add(new DataGridViewTextBoxColumn()
{
HeaderText = "profit",
Name = "columnProfit",
DataPropertyName "Profit",
MinimumWidth = 75,
Width = 75,
Resizable = DataGridViewTriState.False,
SortMode = DataGridViewColumnSortMode.Automatic,
});

List<TestClass> tList = new List<TestClass>();
TestClass tClass = null;
Random tRandom = new Random();

for (int tIndex = 20; tIndex >= 0; tIndex--)
{
tClass = new TestClass();
tClass.Pockets = "AA";
tClass.Profit = Math.Round(tRandom.NextDouble() * 10,
2);
tList.Add(tClass);
}

dataGridView1.DataSource = tList;


************************************************************************************************************************
Wie schaffe ich es, dass der User durch Klick auf den Header der 2.
Spalte diese Spalte sortieren kann und es einen MouseHover-Effekt
gibt?
 

Lesen sie die antworten

#1 Frank Dzaebel
19/12/2009 - 11:16 | Warnen spam
Hallo Christoph,

Wie schaffe ich es, dass der User durch Klick auf den Header der 2.
Spalte diese Spalte sortieren kann und es einen MouseHover-Effekt
gibt?



Ja, das alte List<T> Sortieren-Problem für das DataGridView:

[Sortieren von eigenen Objekttypen in einem DataGridView]
http://groups.google.com/group/micr...42b4088355

[Benutzerdefinierte Datenbindung in Windows Forms 2.0, Teil 2]
http://msdn.microsoft.com/de-de/lib...93236.aspx

Ansonsten generischer:

protected override void ApplySortCore(
PropertyDescriptor property, ListSortDirection direction)
{
List<T> itemsList = (List<T>)this.Items;
if (property.PropertyType.GetInterface("IComparable") != null)
{
itemsList.Sort(new Comparison<T>(delegate(T x, T y)
{
// Compare x to y if x is not null. If x is, but y isn't, we
compare y
// to x and reverse the result. If both are null, they're
equal.
if (property.GetValue(x) != null)
return ((IComparable)property.GetValue(x)).
CompareTo(property.GetValue(y)) *
(direction == ListSortDirection.Descending ? -1 : 1);
else if (property.GetValue(y) != null)
return ((IComparable)property.GetValue(y)).
CompareTo(property.GetValue(x)) *
(direction == ListSortDirection.Descending ? 1 : -1);
else
return 0;
}));
}
isSorted = true;
sortProperty = property;
sortDirection = direction;
}
}
________

Vielleicht noch interessant dazu:

[Benutzerdefinitiertes Sortieren beim DataGrid in C#]
http://dzaebel.net/DataGridIP.htm

[Gleicher Zeilen-Inhalt nach Sortieren beim DataGridView]
http://dzaebel.net/DataGridViewSort.htm


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen