DataGridView Timestamp

12/12/2007 - 14:20 von Sandra | Report spam
Hallo NG,

ich setzte ein Select Statement auf den SQL Server ab, darin befindet sich
eine Spalte vom Typ Timestamp.
Beim Laden des Datagridview erhalte ich eine Fehlermeldung, dass die Spalte
den Typ Timestamp nicht anzeigen
kann, alle anderen Werte werden korrekt angezeigt.
Ich habe die Spalte per Visible=false schon ausgeblendet trotzdem zeigt er
die Fehlermeldung.
(Weil eben die Spalte nur ausgeblendet wird und trotzdem mit Inhalt gefüllt
wird)
Der Timestamp in der SQL Server DB ist vom Typ binary.
Wie kann ich die Werte konvertieren, damit das Grid zu Recht kommt.

Vorab vielen Dank.

Sandra
 

Lesen sie die antworten

#1 Frank Dzaebel
12/12/2007 - 16:00 | Warnen spam
Hallo Sandra,

ich setzte ein Select Statement auf den SQL Server ab, darin befindet sich
eine Spalte vom Typ Timestamp.
Beim Laden des Datagridview erhalte ich eine Fehlermeldung, dass die Spalte
den Typ Timestamp nicht anzeigen
kann, alle anderen Werte werden korrekt angezeigt.
Ich habe die Spalte per Visible=false schon ausgeblendet trotzdem zeigt er
die Fehlermeldung.



Der timestamp-Datentyp ist nur eine inkrementelle
Nummer und behàlt ein Datum oder eine Uhrzeit nicht bei.
Es ist also zum Zeigen für einen User auch nicht
unbedingt geeignet.

[timestamp (Transact-SQL)]
http://msdn2.microsoft.com/de-de/li...82776.aspx

Es wird reichen, wenn Du im Designer auf das
DataGridView klickst, dann "Spalten
bearbeiten", Deine timestamp-Column auswàhlen,
und dann den ColumnType auf DataGridViewTextBoxColumn
stellst.


Wenn Dus doch anzeigen willst/musst, dann
etwa ganz grob:

private void timeTableDataGridView_CellFormatting(object sender,
DataGridViewCellFormattingEventArgs e)
{
DataGridView dgv = (DataGridView)sender;
if (dgv.Columns[e.ColumnIndex].ValueType == typeof(Byte[]))
{
object val = dgv[e.ColumnIndex, e.RowIndex].Value;
if (val == null) return;
MemoryStream ms = new MemoryStream((byte[])val);
BinaryReader br = new BinaryReader(ms);
UInt64 timestamp = br.ReadUInt64();
e.Value = timestamp; ms.Close(); br.Close();
}
}



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

Ähnliche fragen