Problem mit dem DataGrid (C#)

Bella_Isy

Erfahrenes Mitglied
Hallo zusammen,

Mein Situation:
Ich habe mir ein DataGrid in meine Form eingebunden. Zur Laufzeit weise ich die Datasource zu.
Code:
this.dataGrid1.DataSource = this.dataTable1;
Meine Tabelle besteht aus 4 Spalten (Id, Name, Vorname, Geburtstag) und beliebig viele Zeilen.

Mein Problem:
Ich möchte den Inhalt der Spalte 'Vorname' in jeder Zeile bis auf das 1. Zeichen kürzen. Bei Bedarf ist aber der komplette Inhalt der Spalte 'Vorname' sichtbar.
Ich habe mir eine Methode 'SetFirstCharInFirstname' angelegt, die ich dann bei Bedarf aufrufen kann. In dieser Methode möchte ich meine kürzung der Werte vornehmen.
Kann mir wer sagen wie ich das ganze lösen kann ohne jede Zeile aus dem DataGrid einzelt auslesen zu müssen?

Mein Versuch:
Eine Foreach-Schleife bzw. For-Schleife zu programmieren, die jede Datenzeile aus dem DataGrid ausliest und dann den Wert der Spalte 'Vorname' auf das 1. Zeichen kürzt.
Diese Methode bringt zwar den gewüschten Effekt jedoch bei 20 000 Datenzeilen im DataGrid ist das ganze eine sehr langsame Sache. --> Ich brauche eine schnellere Lösung.

Vielleicht kann mir ja einer von euch eine schnellere Lösung anbieten für mein Problem!

Gruß
 
ich habe gerade eine ideale lösung gefunden:
Hier meine Lösung:
Ich fülle mir einfach eine 2 DataTable mit folgendem SQL Befehl.
Code:
DataTable table = new DataTable(); //zweite Tabelle
using (SqlConnection connection = new SqlConnection(connectionString))
{
try 
{connection.Open();
SqlCommand com = new SqlCommand("Select ObjectId, LastName,Substring(FirstName,1,1) as FirstName, DateOfBirth from dbo.MasterTable", connection);
SqlDataReader reader = com.ExecuteReader();
table.Load(reader);
this.ultraGrid1.DataSource = table;

}
catch (Exception ex)
{ MessageBox.Show(ex.Message + System.Environment.NewLine + ex.StackTrace);
}
finally
{ if (connection != null)
     connection.Close();
}

Hier noch einmal der SQL-Befehl:

Select Substring(Spalte,1,1) as Spaltenname, Spalte2. Spalte3
from Tabelle


Wenn jemand vielleicht noch eine bessere Lösung als diese hier weiß, dann bitte auch noch posten.

Gruß
 
Zurück