[ cetiririjeke @ 22.02.2010. 08:49 ] @
| Pozdrav svima,
radi se o slijedećem: na glavnoj formi imam datagridview (npr. nalazi se popis svih računa). Želim da mi se pritiskom na jednu od čelija odnosno jedan račun u tom datagridview-u , otvori slijedeća forma sa svojim datagrid-om i u njemu ispišu detaljniji podaci o tom računu.
Znam napraviti poziv druge forme, ali ne znam kako dobiti na drugom datagrid-u, u drugoj formi detaljnije podatke iz prvog datagrid-a. |
[ malo_nj @ 22.02.2010. 10:19 ] @
moras drugi datagrid view popuniti iznova koristeci to na sta si kliknuo kao parametar. mozes ga prenjeti preko konstruktora druge forme
iz prve forme
Code:
Form2 frm2 = new Form2(dataGridView1.CurrentRow.Cells[0])
frm2.ShowDialog();
e sad si drugoj formi proslijedio prvu kolonu selektovanog reda ( recimo da ti je to neki pk) i na osnovu njega uradis upit ka bazi il vec odakle vadis podatke. Vodi racuna da moras napraviti konstruktor u drugoj formi koja prihvata jedan parametar.
I pazi gore kod Cells[0] mozda treba staviti Cells[0].Value tek sam se probudio pa se ne mogu skontati.
[ malo_nj @ 22.02.2010. 10:25 ] @
moras drugi datagrid view popuniti iznova koristeci to na sta si kliknuo kao parametar. mozes ga prenjeti preko konstruktora druge forme
iz prve forme
Code:
Form2 frm2 = new Form2(dataGridView1.CurrentRow.Cells[0])
frm2.ShowDialog();
e sad si drugoj formi proslijedio prvu kolonu selektovanog reda ( recimo da ti je to neki pk) i na osnovu njega uradis upit ka bazi il vec odakle vadis podatke. Vodi racuna da moras napraviti konstruktor u drugoj formi koja prihvata jedan parametar.
I pazi gore kod Cells[0] mozda treba staviti Cells[0].Value tek sam se probudio pa se ne mogu skontati.
[ cetiririjeke @ 22.02.2010. 10:34 ] @
Hvala na odgovoru, ali budući da to prvi put radim, nisam te baš razumio.
Ja sam na prvoj formi napravio ovo:
private void dataGridView1_CellContentDoubleClick(object sender, DataGridViewCellEventArgs e)
{
frmForma1 frm1 = new frmFrorma2();
frm1.IDRacun = (int)dataGridView1.Rows[racuniBindingSource.Position].Cells[0].Value;
frm2.ShowDialog();
}
i tu sam stao. Da li mi možeš malo detaljnije raspisat kod za drugu formu kad se razbudiš ;-)
[ malo_nj @ 22.02.2010. 12:33 ] @
Code:
private void dataGridView1_CellContentDoubleClick(object sender, DataGridViewCellEventArgs e)
{
frm1.IDRacun = (int)dataGridView1.Rows[racuniBindingSource.Position].Cells[0].Value;
frmForma2 frm2 = new frmFrorma2(frm1);
frm2.ShowDialog();
}
u drugoj formi dodas
Code:
public Form parent;
public void frmForm2(Form par){
this.parent=par;
}
public void nekaFunkcijaKojaPuniDGV(){
String comString = "SELECT * FROM Racuni WHERE Racuni.id = "+parent.IDRacun;
//izvrsis upit il kako vec dobavljas podatke u dgv
}
ako ti jos nesto treba tu sam skoro citav dan pa se slobodno javi
[ cetiririjeke @ 22.02.2010. 14:38 ] @
Do djelomičnog rješenja sam došao na malo drugačiji način, ali i dalje imam problem punjenja drugog datagrid-a na child formi:
Zaboravio sam ti reci da se dio podataka na child formi prikazuju u textbox-vima, a jedan dio u datagrid-u.
Ovaj dio prikaza podataka u textbox-vima sam riješio, ali nikako da napravim ovo s datagrid-om.
Znači, napravio sam slijedeće:
U glavnoj formi na dvostruki klik u jednoj od čelija otvara mi se child forma. Budući da mi se u glavnoj formi nalazi popis svih računa, u child formi želim vidjeti stavke pojedinog računa. U textbox-vima punim podatke o nazivu kupca i adresi kupca, a u datagrid-u želim vidjeti Cijenu, Popust, IDRacuna...
Child forma:
SqlConnection cnn = new SqlConnection();
try
{
cnn.ConnectionString = "NESTO;";
SqlCommand cmd = new SqlCommand(@"Select NazivKupca, AdresaKupca,
from Kupci
where IDKupac=" + IDKupac + " , cnn);
SqlDataReader myReader1;
cnn.Open();
myReader1 = cmd.ExecuteReader();
myReader1.Read();
txtNazivKupca.Text = myReader1["NazivKupca"].ToString();
txtAdresaKupca.Text = myReader1["AdresaKupca"].ToString()
pokcn.Close();
}
Kako da ostatak podatak ubacim u datagrid (Cijenu, Popust, IDRacuna...)?
[ malo_nj @ 22.02.2010. 15:28 ] @
ostavicu ti resenje veceras oko 9 pa naleti
[ malo_nj @ 22.02.2010. 23:18 ] @
e izvinjavam se sto kasnim al evo
Code:
try
{
cnn.ConnectionString = "NESTO;";
SqlCommand cmd = new SqlCommand(@"Select NazivKupca, AdresaKupca,
from Kupci
where IDKupac=" + IDKupac + " , cnn);
SqlDataReader myReader1;
cnn.Open();
myReader1 = cmd.ExecuteReader();
myReader1.Read();
txtNazivKupca.Text = myReader1["NazivKupca"].ToString();
txtAdresaKupca.Text = myReader1["AdresaKupca"].ToString()
string[] rowData = new string[3];
rowData[0] = myReader1["IDRacuna"].ToString() ;
rowData[2] = myReader1["Cijena"].ToString() ;
rowData[3] = myReader1["Popust"].ToString() ;
dgv1.Rows.Add(rowData);
pokcn.Close();
}
recimo da ti je dgv1 naziv tog data grida na drugoj formi. Ako dobijas vise rezultata onda ce ti trebati samo jedan while(myReader1.Read())
[ cetiririjeke @ 23.02.2010. 14:13 ] @
Hvala na trudu.
Budući da mi i dalje ne radi, zbrisao sam cijeli projekt i krenuo ga nanovo napravit, ali ovaj put bez wizarda za spajanje na bazu.
Znam da neke stvari pitam ponovo, ali da li mi možeš reci koji parametar proslijedim konstruktoru u ovom slučaju:
Citat:
malo_nj:
moras drugi datagrid view popuniti iznova koristeci to na sta si kliknuo kao parametar. mozes ga prenjeti preko konstruktora druge forme
iz prve forme
Code:
Form2 frm2 = new Form2(dataGridView1.CurrentRow.Cells[0])
frm2.ShowDialog();
e sad si drugoj formi proslijedio prvu kolonu selektovanog reda ( recimo da ti je to neki pk) i na osnovu njega uradis upit ka bazi il vec odakle vadis podatke. Vodi racuna da moras napraviti konstruktor u drugoj formi koja prihvata jedan parametar.
[ malo_nj @ 23.02.2010. 14:33 ] @
pa zavisi sta ti treba ono drugo resenje je bilo po meni bolje
Code:
frm1.IDRacun = (int)dataGridView1.Rows[racuniBindingSource.Position].Cells[0].Value;
frmForma2 frm2 = new frmFrorma2(frm1);
u ovom slucaju ti formi 2 proslijedis formu jedan i onda mozes da koristis sve njene attribute kao sto je recimo ovaj IDRacun pod uslovom da je public ili mu napravis getter. Mada mozes odma i da proslijedis Cells[0].Value i time u drugoj formi imas vrijednost prvog polja selektovanog reda. Onaj dio sto si imao sto ti je popunjavao textbox-ove je dobar i trebao bi da radi. Samo stavi
Code:
SqlCommand cmd = new SqlCommand(@"Select *
from Kupci
where IDKupac=" + IDKupac + " , cnn);
ako nisi to odradio
[ cetiririjeke @ 24.02.2010. 14:55 ] @
Ono, nikako da proradi tako da stalno nešto kemijam kako da riješim problem.
Sad sam postavio čak dva datagrid-a na jednu formu pa me zanima slijedeće:
U master datagrid-u imam popis svih računa, a u detail datagridu imam stavke računa. Sve sam to postavio, ali mi se ne prikazuju stavke računa u detail datagrid-u kada odaberem neki račun u master datagrid-u.
Šaljem ti cijeli kod i znam da mi nedostaje nešto pa ako imaš živaca, pomogni.
public partial class Form1 : Form
{
public SqlConnection myConnection;
public DataSet myDataSet;
public SqlCommand myCommand;
public BindingSource masterBindingSource = new BindingSource();
public BindingSource detailsBindingSource = new BindingSource();
public int IDRacun;
public Form1()
{
InitializeComponent();
}
private void GetData()
{
try
{
string connectionString = "Server=XXXXXX;Database=XXXXX;Trusted_Connection=True;";
myConnection = new SqlConnection(connectionString);
myConnection.Open();
myDataSet = new DataSet();
SqlDataAdapter masterDataAdapter = new SqlDataAdapter("Select * from Racuni", myConnection);
masterDataAdapter.Fill(this.myDataSet, "Racuni");
SqlDataAdapter detailsDataAdapter = new SqlDataAdapter("select * from StavkeRacuna where IDRacun= " + IDRacun, myConnection);
detailsDataAdapter.Fill(this.myDataSet, "StavkeRacuna");
masterBindingSource.DataSource = this.myDataSet;
masterBindingSource.DataMember = "Racuni";
this.myDataSet.Relations.Add("RacuniStavkeRacuna",
myDataSet.Tables["Racuni"].Columns["IDRacun"],
myDataSet.Tables["StavkeRacuna"].Columns["IDRacun"]);
//skrivanje polja
myDataSet.Tables["Racuni"].Columns["GodinaRacuna"].ColumnMapping = MappingType.Hidden;
detailsBindingSource.DataSource = this.myDataSet;
detailsBindingSource.DataMember = "StavkeRacuna";
myConnection.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void Form1_Load_1(object sender, EventArgs e)
{
gridIzradaRacuna.DataSource = masterBindingSource;
gridDetaljiRacuna.DataSource = detailsBindingSource;
GetData();
gridIzradaRacuna.AutoResizeColumns();
gridDetaljiRacuna.AutoSizeColumnsMode =
DataGridViewAutoSizeColumnsMode.AllCells;
}
[ malo_nj @ 25.02.2010. 13:22 ] @
evo samo prepravi conn string. imas i da otvori na drugoj formi sa button1 ali mora prije toga biti selektovan jedan red
[ cetiririjeke @ 25.02.2010. 20:10 ] @
Hvala ti puno, napokon proradilo

.
Dužan sam ti pivu, dvije...

Imat ću još nekih radova u skoroj budućnosti pa se nadam da te neće smetati, ako te opet malo zadavim s pitanjima.
[ malo_nj @ 26.02.2010. 03:40 ] @
za pivu sve ;)
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.