Hallo,
ich habe ein Problem beim Erstellen eines Verwaltungsprogramms, und zwar habe ich 2 DataGridView's
als sichtbare Tabellen und ein DataTable als nicht sichtbare Tabelle.
Nun möchte ich, dass wenn ich bei der einen Tabelle einen Eintrag auswähle, soll in der DataTable
nach einem string-Wert und einem int-Wert gesucht werden.
Wenn ein oder mehrere Einträge in der DataTable gefunden werden dann sollen diese in der anderen
Tabelle eingefügt werden.
Die zu suchen Werte bekomme ich wenn ich eine Zelle der DataGridView angeklickt habe:
string wert_titel = dataGridViewX1.Rows[e.RowIndex].Cells[0].Value.ToString()
string wert_jahr = dataGridViewX1.Rows[e.RowIndex].Cells[7].Value.ToString()
Die DataTable sieht so aus:
DataTable tabelle_fassungen_filme = new DataTable();
tabelle_fassungen_filme.Columns.Add("Titel", typeof(string));
tabelle_fassungen_filme.Columns.Add("Jahr", typeof(int));
tabelle_fassungen_filme.Columns.Add("Land", typeof(string));
tabelle_fassungen_filme.Columns.Add("Gekuerzt", typeof(string));
tabelle_fassungen_filme.Columns.Add("Medium", typeof(string));
tabelle_fassungen_filme.Columns.Add("Verpackung", typeof(string));
tabelle_fassungen_filme.Columns.Add("CovergroesseAendern", typeof(string));
tabelle_fassungen_filme.Columns.Add("GroesseCover", typeof(string));
tabelle_fassungen_filme.Columns.Add("Cover", typeof(string));
tabelle_fassungen_filme.Columns.Add("Freigabe", typeof(string));
tabelle_fassungen_filme.Columns.Add("OVP", typeof(string));
tabelle_fassungen_filme.Columns.Add("Label", typeof(string));
tabelle_fassungen_filme.Columns.Add("Datum", typeof(string));
tabelle_fassungen_filme.Columns.Add("Laufzeit", typeof(string));
tabelle_fassungen_filme.Columns.Add("Discs", typeof(string));
tabelle_fassungen_filme.Columns.Add("Bildformat", typeof(string));
tabelle_fassungen_filme.Columns.Add("Tonformat1", typeof(string));
tabelle_fassungen_filme.Columns.Add("Tonformat2", typeof(string));
tabelle_fassungen_filme.Columns.Add("Tonformat3", typeof(string));
tabelle_fassungen_filme.Columns.Add("Tonformat4", typeof(string));
tabelle_fassungen_filme.Columns.Add("Untertitel", typeof(string));
tabelle_fassungen_filme.Columns.Add("Extra1", typeof(string));
tabelle_fassungen_filme.Columns.Add("Extra2", typeof(string));
tabelle_fassungen_filme.Columns.Add("Extra3", typeof(string));
tabelle_fassungen_filme.Columns.Add("Extra4", typeof(string));
tabelle_fassungen_filme.Columns.Add("Extra5", typeof(string));
tabelle_fassungen_filme.Columns.Add("Extra6", typeof(string));
tabelle_fassungen_filme.Columns.Add("Extra7", typeof(string));
tabelle_fassungen_filme.Columns.Add("Extra8", typeof(string));
tabelle_fassungen_filme.Columns.Add("Extra9", typeof(string));
tabelle_fassungen_filme.Columns.Add("Extra10", typeof(string));
tabelle_fassungen_filme.Columns.Add("Extra11", typeof(string));
tabelle_fassungen_filme.Columns.Add("Extra12", typeof(string));
tabelle_fassungen_filme.Columns.Add("Extra13", typeof(string));
tabelle_fassungen_filme.Columns.Add("Extra14", typeof(string));
tabelle_fassungen_filme.Columns.Add("Extra15", typeof(string));
tabelle_fassungen_filme.Columns.Add("Bemerkung1", typeof(string));
tabelle_fassungen_filme.Columns.Add("Bemerkung2", typeof(string));
tabelle_fassungen_filme.Columns.Add("Bemerkung3", typeof(string));
tabelle_fassungen_filme.Columns.Add("Bemerkung4", typeof(string));
tabelle_fassungen_filme.Columns.Add("Bemerkung5", typeof(string));
tabelle_fassungen_filme.Columns.Add("Bemerkung6", typeof(string));
tabelle_fassungen_filme.Columns.Add("Bemerkung7", typeof(string));
tabelle_fassungen_filme.Columns.Add("Bemerkung8", typeof(string));
tabelle_fassungen_filme.Columns.Add("Bemerkung9", typeof(string));
tabelle_fassungen_filme.Columns.Add("Bemerkung10", typeof(string));
tabelle_fassungen_filme.Columns.Add("Bemerkung11", typeof(string));
tabelle_fassungen_filme.Columns.Add("Bemerkung12", typeof(string));
tabelle_fassungen_filme.Columns.Add("Bemerkung13", typeof(string));
tabelle_fassungen_filme.Columns.Add("Bemerkung14", typeof(string));
tabelle_fassungen_filme.Columns.Add("Bemerkung15", typeof(string));
Der saubere Weg wäre eigentlich, wenn Du eine UI-unabhängige Datenquelle hast
[Artikel] Drei-Schichten-Architektur
Die Datenquelle nimmst Du dann zum Binden an die UI und auch zum Suchen bzw. zusätzlichen Einblenden in anderen Controls.
Sehr einfach geht das auch mit Reactive Extensions.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Hi,
mal abseits der von Abt angemerkten Sachen:
Ich sehe in deinem Post eine (Teil)Erklärung, was du gerne machen möchtest.
Was ich vermisse: Deine Problembeschreibung 😉
Ein weiteres, wichtiges Stichwort wäre hier: "DataBinding" - auf die Art, die du hier verwendest brichst du dir nur selbst das Genick - Spaß macht das sicher keinen sowas zusammenzuschreibseln...
LG
Hallo,
habs endlich hinbekommen und so wie ich es brauche funktioniert es, die Funktion fürs Suchen habe
ich in eine eigene Methode geschrieben.
private void dataGridViewX1_CellClick(object sender, DataGridViewCellEventArgs e)
{
string wert_titel = dataGridViewX1.Rows[e.RowIndex].Cells[0].Value.ToString();
int wert_jahr = int.Parse(dataGridViewX1.Rows[e.RowIndex].Cells[7].Value.ToString());
findenFassungFilme(wert_titel, wert_jahr);
}
public void findenFassungFilme(string wert_titel, int wert_jahr)
{
dataGridView1.Rows.Clear();
List<string> liste_land = new List<string>();
for (int i = 0; i < tabelle_fassungen_filme.Rows.Count; i++)
{
string titel = tabelle_fassungen_filme.Rows[i][0].ToString();
int jahr = int.Parse(tabelle_fassungen_filme.Rows[i][1].ToString());
if (wert_titel.Equals(titel) && wert_jahr == jahr)
{
string land = tabelle_fassungen_filme.Rows[i][2].ToString();
string gekuerzt = tabelle_fassungen_filme.Rows[i][3].ToString();
Image webImage = new Bitmap("" + gekuerzt);
string medium = tabelle_fassungen_filme.Rows[i][4].ToString();
string verpackung = tabelle_fassungen_filme.Rows[i][5].ToString();
dataGridView1.Rows.Add(i,land, webImage, medium,verpackung);
}
}
}
Also wenn du schon direkt in DataTables suchst würde ich dir empfehlen zumindest typisierte DataSets/Tables zu verwenden. Ich würde direkt in der Datenbank suchen - aber das nur am Rande.