2009-08-26 14 views
7

Ich habe ein Datagrid. Ich möchte eine Spalte, die einfach 1 2 3 4 ... in den Zeilen anzeigt, bis zu so viele Zeilen, wie ich aus meinen anderen Datenbindungen erstellt habe.WPF Datagrid Zeilennummer

<dg:DataGridTextColumn Header="#" IsReadOnly="True" 
              Binding="...."   /> 
+0

Ich habe eine Antwort als Attribut für das Datagrid gefunden, um eine Spalte mit führenden Zahlen anzuzeigen. Ich vergesse das eigentliche Attribut. –

+4

Sie vergessen? Das ist irgendwie nutzlos. Kannst du dir nicht eine Sekunde Zeit nehmen, um dein Programm anzusehen? – JohnB

Antwort

3

Ich habe ein gutes Stück Zeit heute verbrachte über MSDN-Dokumentation und andere Threads für diese Antwort suchen. Die Art und Weise, wie ich dies implementiert habe, ist das Binden einer Eigenschaft (die ich erstellt habe) speziell für Zeilennummern in den Objekten in der Sammlung, an die das Datagrid gebunden ist. z.B.

public class myItem 
{ 
    public int LineNumber { get; set; } 
    // rest of your object... 
} 

Sie müssen die Zeilennummer in den Objekten selbst manuell festlegen.

Eine andere Möglichkeit zum Hinzufügen von Zeilennummern finden Sie here. Hier ist der Code:

datagrid.LoadingRow += 
    new EventHandler<DataGridRowEventArgs>(datagrid_LoadingRow); 

... 
void datagrid_LoadingRow(object sender, DataGridRowEventArgs e) 
{ 
    e.Row.Header = e.Row.GetIndex(); 
} 

Diese Implementierung stellt die Zeilennummern in den Zeilenüberschriften und erfordert Dich nicht eine Eigenschaft setzt nur für Zeilennummern in Ihren Objekten. Wenn Sie jedoch eine Zeile aus dem Datagrid einfügen oder löschen müssen, werden die Zeilennummern nicht aktualisiert.

+1

Die zweite funktioniert nicht. Wenn wir nach oben und unten scrollen, werden alle Header-Werte ungeordnet. Dies ist auf das interne Verhalten von DataGrid zur Verbesserung der Leistung zurückzuführen. – Gopinath

+0

Siehe die Diskussion unter: http://stackoverflow.com/questions/4663771/wpf-4-datagrid-getting-the-row-number-into-the-rowheader/4663799#comment14001342_4663799 für Details darüber, warum dies oder funktioniert möglicherweise nicht mit verschiedenen Versionen von DataGrid, basierend auf der Virtualisierungseinstellung. – Tony

+0

Wenn Sie MSSQL Server 2005+ verwenden, können Sie versuchen: http://msdn.microsoft.com/en-us/library/ms186734.aspx – nvcnvn