Ako jedna od celija (int) sadrzi manje od 5, onda odaberi celiju i promjeni joj boju.
Posto sam koristi LINQ u projektu, pomislio sam da i za takvu stvar ga koristim.
Samo da bih otkrio da je mnogo teze :(
Naime, LINQ nacin u pocetku radi, ali sa dodavanjem/brisanjem novih stavki u bazu, tj. datagridview(DVG), index kljucevi se vise ne poklapaju. Recimo da dodam 10 stavki u DGV, onda ide jedan na jedan, jer je i u bazi 10 id kljuceva. Ako obrisem iz baze deset stavki, pa ih opet dodam onda nema poklapanja vise. Jer, DGV ima 10 stavki i njegov indeks krece od 0-10, a id iz baze je 10-20. Problem je taj da treba da dobijem trenutni DGV index reda iz upita
Kako dobiti DGV.IndexOf koristeci LINQ?
LINQ kod koji ne radi:
DataTable dt2 = novo.eto();
BindingSource bSource = new BindingSource();
bSource.DataSource = novo.eto();
dataGridView1.DataSource = bSource;
var query = from order in dt2.AsEnumerable()
where order.Field<int?>("stanje") < 5 // nullable type
select new
{
STANJE = order.Field<int>("stanje"),
ID = order.Field<int>("id"),
};
foreach (var proradivise in query)
{
if (proradivise.STANJE < 5)
{
this.dataGridView1.Rows[proradivise.ID - 1].DefaultCellStyle.BackColor = Color.Red;
//Umjesto proradivise.ID, treba mi trenutni DGV.IndexOf
}
else
{
this.dataGridView1.Rows[proradivise.ID-1].DefaultCellStyle.BackColor = Color.Green;
}
}
Ovo sam rijesio koristeci jednostavnu for petlju i radi, ali me zanima kako to odraditi sa LINQ-om?
[IMG]http://img233.imageshack.us/img233/5078/thumbnailte1.th.jpg[/IMG]
They say I look like daddy :D