| 

.NET C# Java Javascript Exception

4
Hi,
ich habe mir in C# einen CSV-Parser programmiert, welcher die CSV per Streamreader in die Datagridview einliest(eindimmensionales Array).

Frage 1.) Ich habe in einer Spalte ("Gesperrt") den Wert "Y" stehen.
Wie kann ich in der Spalte ("Gesperrt" nach dem Wert "Y" suchen und die farbe der entsprechenden Zellen dann farbig markieren?

Frage 2.) Wie kann ich in der Datagridview suchen und mir nur die Zeilen in der Datagridview angzeigen lassen, die die entsprechenden Werte aus meiner Suche (hier habe ich 6 Comboboxen - davon 2 mit festen Werten für die Kundengruppen belegt)enthalten. Wie gesagt. Die Daten kommen von einem Array und werden dann gesplittet in die CSV ausgegeben. Mit dieser Zeile würde es über das Array gehen(wobei ich hier leider dann nicht in der entsprechenden Spalte der Datagridview suchen kann, wodurch ich natürlich vielzuviele Suchergebnisse erhalte - z.B. wenn ich nach einer PLZ suche, die natürlich auch in einer Telefonnummer enthalten sein kann)

Hier mal die Zeile für die Suche über das Array das ich verwende:
if (r.Contains(comboBox1.Text) && r.Contains(comboBox2.Text) && r.Contains(comboBox3.Text) && r.Contains(comboBox4.Text) && r.Contains(comboBox5.Text) && r.Contains(comboBox6.Text))
{
{
zeilen++;
Dataset.Tables[Tabellenname].Rows.Add(items);

}

Und der ganze Code der Suchfunktion:
private void button11_Click(object sender, EventArgs e) // Suchebutton - noch anpassen - sucht bisher Reseller...Suche der Combotextfelder direkt in Reihe(Column) möglich?
{
string Trenner = ";";
string Tabellenname = "Kundendaten";
string Dateiname = ("C:\LSPOS\KDB.csv");

DataSet Dataset = new DataSet();
StreamReader sr = new StreamReader(Dateiname);

Dataset.Tables.Add(Tabellenname);
Dataset.Tables[Tabellenname].Columns.Add("Kundennummer");
Dataset.Tables[Tabellenname].Columns.Add("Kundengruppe");
Dataset.Tables[Tabellenname].Columns.Add("Gesperrt");
Dataset.Tables[Tabellenname].Columns.Add("Firma");
Dataset.Tables[Tabellenname].Columns.Add("Vorname");
Dataset.Tables[Tabellenname].Columns.Add("Nachname");
Dataset.Tables[Tabellenname].Columns.Add("Tel");
Dataset.Tables[Tabellenname].Columns.Add("E-Mail");
Dataset.Tables[Tabellenname].Columns.Add("Homepage");
Dataset.Tables[Tabellenname].Columns.Add("PLZ");
Dataset.Tables[Tabellenname].Columns.Add("Ort");
Dataset.Tables[Tabellenname].Columns.Add("Land");
Dataset.Tables[Tabellenname].Columns.Add("hä");

//"Kundennummer"; "Kundengruppe"; "Gesperrt"; "Firma"; "Vorname"; "Nachname"; "Tel"; "E-Mail"; "Homepage(WWW)"; "PLZ"; "Ort"; "Land";

string alldata = sr.ReadToEnd();
string[] rows = alldata.Split("\r".ToCharArray());

int zeilen = 0;
foreach (string r in rows)
{
string[] items = r.Split(Trenner.ToCharArray());


if (r.Contains(comboBox1.Text) && r.Contains(comboBox2.Text) && r.Contains(comboBox3.Text) && r.Contains(comboBox4.Text) && r.Contains(comboBox5.Text) && r.Contains(comboBox6.Text))
{
{
zeilen++;
Dataset.Tables[Tabellenname].Rows.Add(items);

}

{


this.dataGridView1.DataSource = Dataset.Tables[0].DefaultView;
//this.dataGridView1.DataSource = Dataset.Tables[0].DefaultView;
//(dataGridView1.DataSource as DataTable).DefaultView.RowFilter
="PLZ ='" + comboBox4.Text.ToString();
//dataGridView1.Refresh();
dataGridView1.Columns[12].Visible = false; // Blendet die Tabelle

label7.Text = "Gefunden: " + zeilen;

}

}
}
}

Wie ihr seht habe ich die Suche auch schon mit RowFilter etc probiert. Muß ich hierzu erst eine neue View definieren? Muß ich die DefaultView dann am Ende des Codes ersetzen?

Ich bin noch nicht sooo lange bei Visual C# (Vorher VB.NET und PHP).

Vielen Dank für eure Hilfe. Ich würde mich freuen wenn das Problem schon jemand gehabt hätte und lösen könnte.

Gruß aus Oberfranken
Steffen
News:
23.10.2015
Butcherofr 11 1 2
2 Antworten
0
Edit: Frage 1 hab ich teilweise selbst rausgefunden. Allerdings markiert er die Zeile komplett wenn der Wert "Y" in der Spalte gespert in der Datagridview1 steht. Schön wäre es, wenn nur in der Spalte"Gesperrt" den Wert markiert. Hier mal mein bisheriger Code dazu:

public void ColourChange() // Datagridview einfärben nach Kundengruppen und gesperrt.
{
DataGridViewCellStyle RedCellStyle = null;
RedCellStyle = new DataGridViewCellStyle();
RedCellStyle.BackColor = Color.Red;
DataGridViewCellStyle GreenCellStyle = null;
GreenCellStyle = new DataGridViewCellStyle();
GreenCellStyle.BackColor = Color.Green;


foreach (DataGridViewRow dgvr in dataGridView1.Rows)
{
if (dgvr.Cells["Gesperrt"].Value.ToString().Contains("Y"))
{
dgvr.DefaultCellStyle = RedCellStyle;
}
if (dgvr.Cells["Kundengruppe"].Value.ToString().Contains("Servcicepartner"))
{
dgvr.DefaultCellStyle = GreenCellStyle;
}
}
}

Frage 2: ist noch komplett offen..jemand eine Idee???
24.10.2015
Butcherofr 11 1 2
0
Frage 2 hab ich selbst herausgefunden.

Hat wegen Frage 1 noch jemand eine Idee wie ich nur die einzelne Celle farbig markieren kann anstatt der ganzen Zeile?
24.10.2015
Butcherofr 11 1 2

Stelle deine --Frage jetzt!