Grid nach einer anderen Spalte als der angeklickten sortieren

27/08/2007 - 11:49 von Michaela Meier | Report spam
Hallo,

Wie "verbiege" ich unter .net die Sortier-Spalte eines Grids?
Mit dem VB6-FlexGrid war das wunderbar einfach, da das Sortieren noch
manuell ausgelöst werden mußte, nur .net denkt mir ein bißchen zu viel mit
;-)

Ich habe eine als String formatierte Datum-Spalte und eine weitere für den
Benutzer unsichtbare Spalte, in der das "repràsentative" Datum als
Integerzahl (keine Unixtime, aber so àhnlich) eingetragen ist. Die von .net
zur Verfügung gestellten Umrechnungen und Formatierungen kann ich nicht
nutzen, da sich verschiedene Kalenderarten in dieser Tabelle mischen und
einige Daten als "ungültig" erkannt werden könnten, obwohl sie es nicht
sind.

Deshalb soll ein Klick auf den ColumnHeader der sichtbaren Spalte auf den
der unsichtbaren "umgelenkt" werden.

(Wie) geht das in .net?

Danke

Michaela
 

Lesen sie die antworten

#1 Frank Dzaebel
27/08/2007 - 12:48 | Warnen spam
Hallo Michaela,

Wie "verbiege" ich unter .net die Sortier-Spalte eines Grids?



Wird normal nicht benötigt. Welches Datum ist nicht darstellbar?
Besser sauber machen und nicht herumbiegen ...
Ggf. über CellFormatting, CellParsing sauberer lösbar:

[Formatierung von Eintràgen im DataGridView]
http://dzaebel.net/FormatProvider.htm

Lösung Deiner Frage z.B.
(mit dataGridViewTextBoxColumn2 als unsichtbare Spalte):

ListSortDirection sortierung=ListSortDirection.Ascending;

private void personDataGridView_ColumnHeaderMouseClick(object sender,
DataGridViewCellMouseEventArgs e)
{
if (sortierung == ListSortDirection.Descending)
sortierung = ListSortDirection.Ascending;
else sortierung = ListSortDirection.Descending;
DataGridView dgv = (DataGridView)sender;
if (e.ColumnIndex == dataGridViewTextBoxColumn3.Index)
{
dgv.Sort(dataGridViewTextBoxColumn2, sortierung);
DataGridViewColumnHeaderCell chc dgv.Columns[e.ColumnIndex].HeaderCell as
DataGridViewColumnHeaderCell;
chc.SortGlyphDirection = (sortierung = ListSortDirection.Ascending) ? SortOrder.Ascending :
SortOrder.Descending;
}
}


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

Ähnliche fragen