[ perun85 @ 05.11.2008. 19:07 ] @
Imam typed DataSet u kome se nalazi nekoliko tabela. Na formi imam dve dataGridView kontrole, koje su sa dve Binding Source kontrole povezane sa jednom tabelom u DataSetu. Ta tabela ima jedno polje u koje je smesten odredjeni datum na osnovu koga vrsim filtriranje.
Preciznije jedan DataGridView prikazuje korisnike cija je vrednost datumske kolone veca od danasnjeg datuma, a drugi gde je ista vrednost manja. Ovo postizem tako sto u Form_Load dodam slede'i kod:

bindingSource1.Filter = "datum>=" + "\'" + DateTime.Now.ToString() + "\'";
bindingSource2.Filter = "datum<" + "\'" + DateTime.Now.ToString() + "\'";

Pri pokretanju programa svi redovi bivaju ispravno prikazani, no tu se javlja problem kada selektujem odredjeni red i zelim da iz njega izvucem vrednost odredjene kolone (FullRowSelect = true i MultiSelect = false) on mi vrati podatke korisnika koji se ne nalazi na poziciji sa tim indeksom u dataGridView. Da budem jos precizniji efekat je isti kao da su svi redovi bez obzira na datum ucitani u taj DataGridView,a prikazani su samo oni sa ispravnim datumom a ovi ciji datum nije ispravan su "sakriveni" ali su ostali na svojim pozicijama u DataGridVIew-u i zadrzali svoje indeksee.

Posto pretpostavljam da je ovo posledica upotreba Filter svojstva BindingSourca, postoji li nacin da ovu gresku ispravim? Ukoliko ne postoji, mozete li mi predloziti drugi nacin da izvedem ovo filtriranje? Meni je na pamet balo dodavanje jos jedne iste tabele u DataSet samo gde bi SELECT query izgledao "SELECT * FROM Tabela WHERE datum >= (GETDATE())", no mislim da postoji i bolje resenje od ovoga gde se bespotrebno dupliraju podaci.

Hvala unapred na odgovorima.
[ Igor Gajic @ 06.11.2008. 06:17 ] @
Kako dolazis do podataka iz tabele na osnovu indexa reda u dataGridView ?

Ako koristis TabelaKojuKoristis.Rows, gde je i index trenutnog reda, onda sigurno nece prikazati redo koje zelis.

Poenta je da koristis nesto tipa:

Code:


(DataRowView)bindingSource1.Current



Ovako dobijas trenutno izabrani red.

Kada koristis Filter svojstvo, ne izbacujes redove iz tabele koju koristis vec samo izbacujes redove iz bindingSource-a. I samo ti redovi se prikazuju u dataGridView.
[ perun85 @ 06.11.2008. 13:11 ] @
Upravo tako, do podataka sam dolazio na osnovu indexa reda. Probacu sa ovim kodom. Hvala na odgovoru.
[ perun85 @ 06.11.2008. 13:45 ] @
Evo upravo sam doradio problematicni deo aplikacije i sada radi odlicno. Hvala jos jednom.