[ bigguy @ 31.10.2008. 08:11 ] @
Imam jedan problem, pa sam se stoga, ponovo obratio forumu. Rec je o tome da imam jednu formu i u okviru nje imam textboxo-ve i jedan combox.Takodje tu sam formu povezao sa bazom u okviru koje imam jednu tabelu. U okviru te forme imam kod za combox i njegovo punjenje podacima iz baze, i to je sve ok. Kod punjenja i prikaza coboxa dao sam na kraju ove poruke. U comboxu korisnik moze da odabira ponudjene opcije (u ovom slucaju mesta stanovanja) ali problem nastaje kada njegovog mesta stanovanja nema u bazi e tada bi korisniku trebalo da se omoguci da u istom tom comboxu upise svoje mesto stanovanja a da se pritom to mesto automastki upisuje i u bazu. Mislim da sam donekle problem opisao onako kako treba, a verujem da su iskusniji programeri vec odavno upuceni u nacin resavanja ovog problema, pa vas molim za pomoc 
KOD COMBOXA:
Klasa frmUpisPacijenta:
public partial class frmUpisPacijenta : Form
{
public frmUpisPacijenta()
{
InitializeComponent();
}

// Objekti klase
clsProcedures clsProd = new clsProcedures();

private void Save_Click(object sender, EventArgs e)
{
clsProd.AddOsnovnihPodataka(txtIme.Text, txtIme_oca.Text, txtPrezime.Text, txtJMBG.Text, dtpDatumRodjenja.Text,txtAdresa.Text, (string) cmbMesto.SelectedValue, rbntM.Checked, rbntZ.Checked);
MessageBox.Show("Uspešno ste uneli pacijenta.","Uspešan
unos",MessageBoxButtons.OK,MessageBoxIcon.Information);
this.Close();
}
public void FillcmbMesto()
{
clsProcedures cls = new clsProcedures();
dsOsnovniPodaci ds = new dsOsnovniPodaci();

cmbMesto.DataSource = cls.ListGradova(ds).Tables[0].DefaultView;
cmbMesto.DisplayMember = "[Mesto stanovanja]";
cmbMesto.ValueMember = "ID";
}
}
Klasa clsProcedures:
public class clsProcedures : ISLab.clsSqlConnection
{
public clsProcedures()
{}

public void AddOsnovnihPodataka(string ime, string ime_oca, string prezime, string jmbg, string datum_rodjenja,
string adresa, string mesto, string drzavljanstvo, bool pol_M, bool pol_Z)
{
string sSQL;
sSQL = "INSERT INTO tblOsnovniPodaci(Ime, [Ime oca], Prezime, JMBG, [Datum rođenja], [Adresa stanovanja], ";
sSQL += "[Mesto stanovanja], [Pol M], [Pol Ž])";
sSQL += "VALUES";
sSQL += "('" + ime + "', '" + ime_oca + "', '" + prezime + "', '" + jmbg + "',";
sSQL += "'" + datum_rodjenja + "', '" + adresa + "', '" + mesto + "',";
sSQL += "'" + (pol_M ? "1" : "0") + "', '" + (pol_Z ? "1" : "0") + "')";
ExecuteSQL(sSQL);
}

//Prikaz comboxa Gradova
public DataSet ListGradova(DataSet ds)
{
string sSQL = "SELECT * FROM tblOsnovniPodaci ORDER BY [Mesto stanovanja] ASC";
DataSet rtnDs = ds;
FillDataSet(rtnDs, sSQL, "tblOsnovniPodaci");
return rtnDs;
}
}

Klasa clsSqlConnection:

public class clsSqlConnection
{
public SqlConnection conn;
private string strconn;

protected DataSet FillDataSet (DataSet dset, string sSQL, string tbl)
{
SqlCommand cmd = new SqlCommand (sSQL,conn);
SqlDataAdapter adapter = new SqlDataAdapter (cmd);
try
{
adapter.Fill(dset,tbl);
}
finally
{
conn.Close();
}
return dset;
}
}

[ sallle @ 01.11.2008. 11:25 ] @
posto nisi izvuko gradove u posebnu tabelu. ja bih to vako:

prilikom ucitavanja, ne bih bindovo combobox, vec bih prosto isao items.add , i dodao kao stringove distinct mesta.

korisnik bi izabrao neki postojeci grad, ili bi upisao rucno nest (ostavljen onaj property da moze da se ukucava rucno u combobox)

prilikom sejviranja, u bazu bih upisao selektovan text...

sustinski, ponasanje kao adresbar u browseru
[ bigguy @ 02.11.2008. 13:25 ] @
Oprosti nisam sve baš najajsnije razumeo :( Relativno sam svež u programiranju pa mi onaj deo kada kažeš "ne bih bindovao combox" i nije baš najjasniji. Da li se to odnosi na funkciju public void FillcmbMesto() ili već na nešto drugo? Ako nije problem samo malo detaljniji opis izmena ako može kako bi dokučio šta konkretno treba izmeniti u kodu ili neki kratak primer :)

[Ovu poruku je menjao bigguy dana 03.11.2008. u 10:40 GMT+1]
[ sallle @ 03.11.2008. 13:17 ] @
da da, ta metoda:
ja bih vako nekako to odradio:

Code:

foreach (DataRow dr in Tvoja_tabela.Rows)
{
  if (dr.RowState!=DataRowState.Deleted && dr["mesto_stanovanja"]!=DbNull.Value && !cmbMesto.Items.Contains((string)dr["mesto_stanovanja"])
    {
       cmbMesto.Items.Add((string)dr["mesto_stanovanja"]);
    }
}


a prilikom upisa u bazu, bih iscitavao cmbMesto.SelectedText
[ bigguy @ 03.11.2008. 18:11 ] @
Sallle hvala na odgovoru, ali nazalost i dalje u comboxu ne mogu da upisujem mesto stanovanja ukoliko ga nema medju ponudjenim opcijama koje se otvaraju klikom. Probao sam u properties-u comboxa da nadjem onu opciju za rucni upis ali je nisam nasao. Mozesli mi tacno reci koja je to opcija? Funkcija sa izmenama mi sada izgleda ovako:

public void FillcmbMesto()
{
clsProcedures cls = new clsProcedures();
dsOsnovniPodaci ds = new dsOsnovniPodaci();

foreach (DataRow dr in cls.ListGradova(ds).Tables[0].Rows)
{
if (dr.RowState != DataRowState.Deleted && dr["Mesto stanovanja"] != DBNull.Value && !cmbMesto.Items.Contains((string)dr["Mesto stanovanja"]))
{
cmbMesto.Items.Add((string)dr["Mesto stanovanja"]);
}
}
}

Ali novonastali problem sa ovakvom funkcijom je da odabrane vrednosti se ne skladiste u tabeli, jer se u tabeli DataGrid ove vrednosti ne vide dok se sve ostale vrednosti forme vide. Nemam pojma zasto?!
Imasli jos neki predlog?!

[Ovu poruku je menjao bigguy dana 04.11.2008. u 00:58 GMT+1]