Autor Beitrag
BlackMatrix
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 243
Erhaltene Danke: 1



BeitragVerfasst: Mi 07.09.11 14:53 
Hi.

Wie kann ich die Anzahl der Zeileneinträge für den Benutzer ersichtlich machen? Ich möchte also im DGV eine fortlaufende Zahl, die ganz links deutlich macht, welcher Eintrag es ist und die letzte gibt mir an wieviele es sind.
Ich hatte mit einer autoincrement ID begonnen, habe aber nun festgestellt, wenn ich Einträge entferne, dann entstehen Lücken in der Zahl und die letzte Zahl gibt nicht die wirkliche Anzahl wieder.

Da muss ich doch sicher auf das Ereignis reagieren, wenn in der Spalte ID geändert wird und dann jeden Eintrag wieder von vorne die Nummer 1-xxxxx verpassen? Ist das nicht sehr aufwendig?

MfG BlackMatrix


Zuletzt bearbeitet von BlackMatrix am Mi 07.09.11 15:17, insgesamt 1-mal bearbeitet
mats74
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 189
Erhaltene Danke: 26

Win 10
VS 2017/19, C++, C#
BeitragVerfasst: Mi 07.09.11 15:07 
Hallo BlackMatrix

Du kannst eine Funktion erstellen, welche die gewünschte Zeilenanzahl in einer beliebigen Spalte erstellt.

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
private void DEINEFUNKTION()
        {
            int i = 0;
            foreach (DataGridViewRow row in dataGridView1.Rows)
            {
                i++;
                row.Cells["IRGENDEINENSPALTENNAMEN"].Value = Convert.ToString(i);
            }
        }


Diese funktion kannst Du bei einem beliebigen Event auslösen, somit hast Du immer die fortlaufende Zeilenanzahl ersichtlich.
(Spaltensortierung beachten).

Gruss
mats74

Für diesen Beitrag haben gedankt: BlackMatrix
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mi 07.09.11 15:29 
Du könntest den RowHeader missbrauchen und da einfach beim Paint den aktuellen RowIndex reinschreiben. Das sollte auch ohne größere Probleme jedes editieren, sortieren etc. überstehen. Den Code müsstest du noch ein wenig Schick machen das er auch mit den verschiedenen DataGridView Einstellungen (zumindest deine konkreten) zurechtkommt.

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
 
//in einem abgeleiteten DataGridView überschriebenes OnRowPostPaint
protected override void OnRowPostPaint(DataGridViewRowPostPaintEventArgs e)
{
    string formattedRowNumber = (e.RowIndex + 1).ToString().PadLeft(RowCount.ToString().Length, '0');
    SizeF size = e.Graphics.MeasureString(formattedRowNumber, Font);                        
    e.Graphics.DrawString(formattedRowNumber, Font, SystemBrushes.ControlText, e.RowBounds.Location.X + 15, e.RowBounds.Location.Y + (e.RowBounds.Height - size.Height) / 2);
    base.OnRowPostPaint(e);
}

Für diesen Beitrag haben gedankt: BlackMatrix