[ frees @ 14.07.2009. 11:34 ] @
Cao svima,
relativno pocinjem sa programiranjem, pa mi treba maaala pomoc. Imam Datagrid na jednoj formi (frmPretraga) i hocu da kada se pocicioniram na neki od redova u tom gridu da na dugme Azuriranje otvorim drugu formu gde se vrsi azuriranje tih podataka, ali tako da se u toj formi pozicioniram na tacno onaj slog na koji sam kliknula u gridu na frmPretraga. Ovako se pozicionira uvek na prvi slog tabele. Isti dataset koristim u obe forme.Unapred hvala svima koji se potrude da odgovore!
[ logic_rabbit @ 14.07.2009. 13:59 ] @
Najlakse ti je da DataSet prosljedis kao DataSource BindingSource-u. I onda BindingSource prosljedjujes toj detaljnoj formi ili Current od BindingSource-a.
Code:

BindingSource src=new BindingSource();
src.DataSource= TvojDataset;
DataGridView1.DataSource=BindingSource;

//I onda iz BindingSource-a vadis trenutni slog veoma lako:
src.Current      
[ frees @ 15.07.2009. 07:59 ] @
Hvala na odgovoru. Jos malo moram da zanovetam:(. Kako da prosledim Current slog toj drugoj formi? Da li da idem preko parent formi ili kao neku globalnu da prenosim?... Tnx na trudu
[ logic_rabbit @ 15.07.2009. 19:31 ] @
Posto si rekla da korisis dataSet-ove tvoj current je ustvari dataRow iz nekog dataTable objekta u dataSet-u.
Znaci prosljedi tako sto ces napraviti konstruktor toj detaljnoj formi koji prima object i onda castuj to u dataRow ili prosljedi cijeli bindingSource.

Ako ti se forma zove frmPero.Napravi public konstruktor

public frmPero(object current)
{

}
ili
public frmPero(bindingSource currentBindingSource)
{

}
i onda iz forme sa gridom pozivas detaljnu ovako :
frmPero detaljnaforma=new frmPero(bindingSource.Current);
detaljnaforma.ShowDialog(); //ili tako nesto

Ovaj current castuj onda u dataRow posto je tipa object...
[ bigguy @ 16.07.2009. 07:23 ] @
Ne znam da li si mozda razmisljala o ListView resenju? Mozda je za nijansu komplikovanije ali je za oko prikladnija Evo nekog koda na brzaka napravljenog.
Najpre ListView definises tako da postavis koje sve kolone zelis da ti se prikazuju u tvom ListView-u, a zatim kada zazelis da ga napunis podacima pozoves ovu funkciju:

Code:

        public void ucitavanje(string sSQL) //sSQL je tvoj SELECT string kojim povlacic podatke iz odgovarajuce tabele
        {
            try
            {
                long totalRow = 0;

                daLista.SelectCommand.CommandText = sSQL;

                dsLista.Clear();
                daLista.Fill(dsLista, Tabela);

                totalRow = dsLista.Tables[Tabela].Rows.Count - 1;

                listView.Items.Clear();
                for (int i = 0; i <= totalRow; i++)
                {
                    listView.Items.Add(new ListViewItem("" + dsLista.Tables[Tabela].Rows[i].ItemArray.GetValue(0).ToString(), 22));
                    listView.Items[i].SubItems.Add("" + dsLista.Tables[Tabela].Rows[i].ItemArray.GetValue(1).ToString());
                    listView.Items[i].SubItems.Add("" + dsLista.Tables[Tabela].Rows[i].ItemArray.GetValue(2).ToString());
                    listView.Items[i].SubItems.Add("" + dsLista.Tables[Tabela].Rows[i].ItemArray.GetValue(3).ToString());
                    listView.Items[i].SubItems.Add("" + dsLista.Tables[Tabela].Rows[i].ItemArray.GetValue(4).ToString());
                   
                    ... //koliko imas podataka toliko moras imati i ovih redova punjenja tvog listView-a
                }
                if (listView.Items.Count > 0)
                {
                    try
                    {
                        listView.Items[0].Focused = true;
                        listView.Items[0].Selected = true;
                        listView.Items[0].EnsureVisible();
                        listView.Focus();
                    }
                    catch (ArgumentOutOfRangeException aooreE) { }
                    catch (NullReferenceException nreE) { }
                }
            }
            catch (Exception ex) { }
        }


Kada si napunila ListView ostaje ti samo da u Properties-u podesis da ti MultiSelect bude False i onda pozivas event:

Code:
       
        private void lvOsnovniPodaci_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            if (lvOsnovniPodaci.SelectedItems.Count > 0)
            {
                listView.Visible = false;          // ne moras pozivati ni drugu formu. Dovoljno je samo da sakrijes tvoj listView i postavis da su ti potrebni elementi Visible = true
                label1.Visible = true;                
                label2.Visible = true;
                label3.Visible = true;
                label4.Visible = true;
                label5.Visible = true;
                label1.Text = lvOsnovniPodaci.SelectedItems[0].SubItems[0].Text;
                label2.Text = lvOsnovniPodaci.SelectedItems[0].SubItems[1].Text;
                label3.Text = lvOsnovniPodaci.SelectedItems[0].SubItems[2].Text;
                label4.Text = lvOsnovniPodaci.SelectedItems[0].SubItems[3].Text;          
                label5.Text = lvOsnovniPodaci.SelectedItems[0].SubItems[4].Text;
                ... // na ovaj nacin ucitavas podatke
            }
        }


Ja licno ne volim da radim sa DataSet-ovima i BindingSource-ovima jer dosta ogranicavaju rad sa podacima. Oni su ok ako je nesto jednostavno u pitanju ali za komplikovanija punjenja..... Nadam se da ce ti ovo pomoci

[Ovu poruku je menjao bigguy dana 16.07.2009. u 09:01 GMT+1]
[ logic_rabbit @ 16.07.2009. 14:50 ] @
Citat:
Ja licno ne volim da radim sa DataSet-ovima i BindingSource-ovima jer dosta ogranicavaju rad sa podacima. Oni su ok ako je nesto jednostavno u pitanju ali za komplikovanija punjenja..... Nadam se da ce ti ovo pomoci


Nemoj lupati ako ne znas. Oni uopste ne ogranicavaju rad sa podacima vec bas suprotno. Ovaj kod sto si ti napisao je jako komplikovan i nakaradan u odnosu da rijesenje sa BindingSource-om . Ako ti nisi uspio napraviti kod da radi sa BindingSource-om nemoj druge nagovarati na isto...

I bas je suprotno od toga sto si napisao. ListView se koristi samo za neke jednostavnije stvari. Cim zelite nesto komplikovanije sa bindovanjem i kompleksnom funkcionalnoscu preporucuje se DataGridView .