| 

.NET C# Java Javascript Exception

1
Hallo, ich versuche gerade ein DataGrid mit Daten zu füllen.
Die Folgende Struktur stellt jeweils ein Element (eine Zeile) dar:
/// <summary>
/// Repräsentiert einen Lehrer.
/// </summary>
[DataContract(Namespace = "[...]")]
public struct Lehrer
{
/// <summary>
/// Der Nachname des Lehrers.
/// </summary>
[DataMember(IsRequired = true)]
public string Name
{
get;
set;
}

/// <summary>
/// Der Vorname des Lehrers.
/// </summary>
[DataMember(IsRequired = true)]
public string Vorname
{
get;
set;
}

/// <summary>
/// Das Kürzel des Lehrers.
/// </summary>
[DataMember(IsRequired = true)]
public string Kuerzel
{
get;
set;
}

/// <summary>
/// Gibt Titel an, die der Lehrer besitzt (z.B. Doktor).
/// </summary>
[DataMember(IsRequired = true)]
public string Titel
{
get;
set;
}

/// <summary>
/// Das Geschlecht des Lehrers.
/// </summary>
[DataMember(IsRequired = true)]
public Geschlechter Geschlecht
{
get;
set;
}

/// <summary>
/// Gibt das Geschlechter der Lehrer an.
/// </summary>
[Serializable]
public enum Geschlechter
{
Mann = 1,
Frau = 2,
Unbekannt = 0
}

/// <summary>
/// Konvertiert die Lehrer-Instanz in einen String.
/// </summary>
public override string ToString()
{
string ret = "";

ret += Kuerzel + ": ";
if (Geschlecht == Geschlechter.Mann)
ret += "Herr ";
else if (Geschlecht == Geschlechter.Frau)
ret += "Frau ";
ret += (Titel ?? "") + " ";
ret += (Vorname ?? "") + " ";
ret += (Name ?? "") + " ";

return ret;
}

/// <summary>
/// Instanziert einen neuen Lehrer.
/// </summary>
/// <param name="pName">Der Nachname des Lehrers.</param>
/// <param name="pVorname">Der Vorname des Lehrers.</param>
/// <param name="pKuerzel">Das Kürzel des Lehrers.</param>
/// <param name="pGeschlecht">Das Geschlecht des Lehrers.</param>
/// <param name="pTitel">Gibt Titel an, die der Lehrer besitzt (z.B. Doktor...).</param>
public Lehrer(string pName, string pVorname, string pKuerzel, Geschlechter pGeschlecht, string pTitel)
{
this = new Lehrer()
{
Kuerzel = pKuerzel,
Geschlecht = pGeschlecht,
Vorname = pVorname,
Name = pName,
Titel = pTitel
};
}
}


Nun kommt es zu folgender Situation:

public partial class LURManagingWindow : Window
{
DataGridColumn[] ColumnObjects =
{
new DataGridTextColumn()
{
Header = "Name"
},
new DataGridTextColumn()
{
Header = "Vorname"
},
new DataGridTextColumn()
{
Header = "Kuerzel"
},
new DataGridTextColumn()
{
Header = "Titel"
},
new DataGridComboBoxColumn()
{
Header = "Geschlecht"
}
};

public LURManagingWindow(List<Lehrer> pLehrerList)
{
InitializeComponent();

LehrerList = pLehrerList;

// Erstellen der Spalten im Datagrid
for (int i = 0; i < ColumnObjects.Length; i++)
{
this.dataGrid1.Columns.Add(
ColumnObjects[i]);
}

LehrerList.Add(new Lehrer("DDD", "dd", "Dd", Lehrer.Geschlechter.Frau, "prof."));
LehrerList.Add(new Lehrer("DDD", "EggEE", "DEg", Lehrer.Geschlechter.Unbekannt, "dr."));
LehrerList.Add(new Lehrer("DDD", "EEE", "DE", Lehrer.Geschlechter.Mann, ""));
LehrerList.Add(new Lehrer("DDD", "ff", "Df", Lehrer.Geschlechter.Frau, "prof. dr."));

this.dataGrid1.ItemsSource = LehrerList;
}


/// <summary>
/// Verwaltet alle vom Benutzer hinzugefügten Lehrer.
/// </summary>
public List<Lehrer> LehrerList
{
get;
private set;
}
}


Das Grid bleibt leer. Es werden nur Leere Zeilen angezeigt. Die Spalten sin jedoch korrekt beschriftet. Wenn ich versuche eine Zelle zu bearbeiten, und ich Enter drücke ändert sich dei Zelle nicht. Wo liegt also der Fehler?
16.09.2012
asdfghjkl5670 15 4
Floyd 14,6k 3 9
2 Antworten
1
Während WPF, wenn ich das jetzt richtig parat habe, bei Nutzung von AutoGenerateColumns die Spaltenüberschriften aus den Property-Namen der Row-Objekte ableitet, gilt die Umkehrung bei manueller Vorgabe der Spalten nicht - d.h. Du kannst nicht erwarten, dass das DataGrid sich den Wert für die Spalte "Name" aus Lehrer.Name zieht, nur weil Du die Spaltenüberschrift so gesetzt hast. Du mußt vielmehr auch noch das Binding für jede Spalte setzen. Hier findest Du einen Walkthrough, der das in XAML zeigt - das gleich mit Zusammenbauen des Grids in C# (warum eigentlich, nebenbei gefragt?) solltest Du dann selbst herleiten können.
16.09.2012
Matthias Hlawatsch 13,2k 4 9
0
Danke, die Frage ist beantwortet. Neues Problem: hier.
18.09.2012
asdfghjkl5670 15 4

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH