Soweit klappt das auch alles. Der Aufruf zum Laden/Anzeigen der Daten geht richtig schnell, nur die farbliche Markierung dauert recht lange (~10sek).
Nun wäre meine Frage, ob ein anderer Aufbau zu einer Verbesserung der Performance führt? Bzw. was ich ändern kann/soll?
dataGridView1.DataSource = dt;
Die farbliche Markierung:
void ColorGridView()
{
bool weKomplettAbgeschlossen = false;
bool weTeilweiseAbgeschlossen = false;
bool reKomplettAbgeschlossen = false;
bool reTeilweiseAbgeschlossen = false;
for (int n = 0; n < dataGridView1.Rows.Count; n++)
{
// Prüfen ob WEbereits komplett abgeschlossen wurde.
weKomplettAbgeschlossen = AufrufWE_Abgeschlossen_Pruefen(Convert.ToInt32(dataGridView1["id", n].Value));
if (!weKomplettAbgeschlossen)
{
weTeilweiseAbgeschlossen = AufrufWE_Erfolgt(Convert.ToInt32(dataGridView1["id", n].Value));
if (weTeilweiseAbgeschlossen)
{
dataGridView1["WEabgeschlossen", n].Style.BackColor = System.Drawing.Color.Yellow;
}
if (!weTeilweiseAbgeschlossen)
{
dataGridView1["WEabgeschlossen", n].Style.BackColor = System.Drawing.Color.Red;
}
}
if (weKomplettAbgeschlossen)
{
dataGridView1["WEabgeschlossen", n].Style.BackColor = System.Drawing.Color.Green;
}
// Prüfen RE komplett abgeschlossen.
reKomplettAbgeschlossen = AufrufRE_Abgeschlossen_Pruefen(Convert.ToInt32(dataGridView1["id", n].Value));
if (!reKomplettAbgeschlossen)
{
reTeilweiseAbgeschlossen = AufrufRE_Erfolgt(Convert.ToInt32(dataGridView1["id", n].Value));
if (reTeilweiseAbgeschlossen)
{
dataGridView1["REabgeschlossen", n].Style.BackColor = System.Drawing.Color.Yellow;
}
if (!reTeilweiseAbgeschlossen)
{
dataGridView1["REabgeschlossen", n].Style.BackColor = System.Drawing.Color.Red;
}
}
if (reKomplettAbgeschlossen)
{
dataGridView1["REabgeschlossen", n].Style.BackColor = System.Drawing.Color.Green;
}
}
}
Hier mal der Aufruf AufrufWE_Erfolgt:
public static bool AufrufWE_Erfolgt(int id)
{
try
{
using (entity ctx = new entity())
{
var query = (from w in ctx.tblwareneingang
where w.bestellId == id
select w).ToList();
if (query != null)
{
foreach (tblwareneingang we in query)
{
// falls abgeschlossen.
if (we.liefermengeAbgeschlossen)
return true;
else
// falls zumindest Eintrag existiert.
if (we.gelieferteMenge != 0)
return true;
}
return false;
}
else
return false;
}
}
catch (Exception ex)
{
return false; ;
}
}