[ bigguy @ 13.03.2009. 12:03 ] @
Imam dva pitanja za ListBox, a prvo je:
Da li je moguce da omogucim korisniku da markira vise podatke koji su ucitani u ListBox-u, i kako to da izvedem?
A drugo se nadovezuje na prvo i glasi:
Kako da obezbedim da se markirani podaci u ListBox-u (znaci vise njih) skladiste u bazu, ali tako da se svaki markiran podatak memorise u novi red tabele?
[ Igor Gajic @ 13.03.2009. 16:33 ] @
Citat:

Da li je moguce da omogucim korisniku da markira vise podatke koji su ucitani u ListBox-u, i kako to da izvedem?



Imas u properties-u opciju SelectionMode, izaberi MultipleExtended.

Citat:

Kako da obezbedim da se markirani podaci u ListBox-u (znaci vise njih) skladiste u bazu, ali tako da se svaki markiran podatak memorise u novi red tabele?


Code:

            ListBox.SelectedObjectCollection so = listBox1.SelectedItems;
            foreach (object o in so)
            {
                //Formiranje INSERT STRINGA/KOMANDE za svaki objekat posebno....
                //Izvrsavanje insert komande
            }
[ bigguy @ 13.03.2009. 18:56 ] @
Ali ako mi je "o" object kako da ga insertujem u tabelu?
[ Igor Gajic @ 13.03.2009. 19:23 ] @
Nisi naveo koje podatke stavljas u ListView. String, vise stringova, neke svoje objekte,....

Kastuj object u tip podatka koji si ubacio u ListView pa odatle uzmi podatke koji ti trebaju.

Ako nisi siguran kog tipa je o onda stavi breakpoint na foreach i gledaj u Watch prozoru sta ti kaze za o.
[ bigguy @ 15.03.2009. 11:31 ] @
Za "o" kaze da je DataRowView. Kastovo sam ga pomocu metode ToString() ali mi problem nastaje zato sto petlja foreach mi samo izbroji broj selektovanih items ali njihove vrednosti ne pamti, tako da mi u tabeli onda skladisti tekst System.Data.DataRowView. ListBox punim preko DataSource: tblStaraBindingSource vrednostima iz tblStara, a selektovane vrednosti bi trebalo da cuvam u tblNova. Imali nacina da uskladistim vrednosti selektovane u ListBox-u?
[ Igor Gajic @ 15.03.2009. 12:48 ] @
Ok.


Probaj da ovako kastujes:

Code:

DataRowView temp=((DataRowView)o);


Tako dobijes red u tabeli. Odredjenim vrednostima pristupas normalno, dakle mozes koristiti:

temp[0];


Sto predstavlja prvu kolonu u tblStara;
[ bigguy @ 15.03.2009. 14:53 ] @
Imam nov problem Sada mi tabelu popuni sa brojevima redova, a ne sa njihovim vrednostima. Caka je u tome sto je meni punjenje ListBox-a promenjivo, odnosno korisnik moze brisati ili upisivati nove redove u tblStaro pa mi sad to dosta komplikuje kako da resim upis u tblNovo. Evo i koda:
Code:

    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }

        clsFunctions clsFunc = new clsFunctions();

        private void btnOK_Click(object sender, EventArgs e)
        {
            ListBox.SelectedObjectCollection so = listBox1.SelectedItems;
        
            foreach (object o in so)
            {
                DataRowView temp = ((DataRowView)o);
                string item = temp[0].ToString();

                clsFunc.DodavanjeVrednosti(item);
            }
         }
    }

   public class clsFunctions:Proba.Class1
    {
        public void DodavanjeVrednosti(string vrednost)
        {
            string sSQL = "INSERT INTO tblNovo(Vrednost) VALUES ('" + vrednost + "')";
            ExecuteSQL(sSQL);
        }
    }
    public class Class1
    {
        protected void ExecuteSQL(string sSQL)
        {
            SqlCommand cmd = new SqlCommand(sSQL, conn);
            try
            {
                conn.Close();
                conn.Open();
                cmd.ExecuteNonQuery();
            }
            finally
            {
                conn.Close();
            }
        }
    }
[ Igor Gajic @ 15.03.2009. 15:03 ] @
Koja ti je struktura tabele tblStara ???

Npr ako imas tabelu:

Code:

CREATE TABLE tblStara
(
idStara INT PRIMARY KEY IDENTITY,   -- Ova kolona ima index 0
vrednost CHAR(50)                            -- Ova kolona ima index 1
);



onda ce ti

Code:

 string item = temp[0].ToString();


vracati idStara.

A tebi treba :

Code:

 string item = temp[1].ToString();


da dodjes do prave vrednosti.

[ mayana @ 18.03.2009. 11:32 ] @
ja sam radila tako nesto u nekom seminarskom, kao imas sve unete ucenike, pa ti biras ucenika iz listboxa svi ucenici i klikom na button odredjene prebacujes u list box odelenje, da formiras novo odelenje od odabranih ucenika. evo ti kod, mada sasvim sigurno nije optimizovan i ima zilion gresaka, al mozda nesto pomogne. radi.... ali verovatno nije najbolje resenje, reci ce ti iskusniji.

Code:

private void button1_Click(object sender, System.EventArgs e)
        {
                //unos u list box
                if (this.clbSviUcenici.CheckedItems.Count>0)
                {
                    this.lbOdabraniUcenici.Items.Clear();
                    foreach (string item in this.clbSviUcenici.CheckedItems)
                    {
                        this.lbOdabraniUcenici.Items.Add(item.ToString());
                        this.lbOdabraniUcenici.SelectedItem=item;
                        //unos u bazu
                        broj = this.lbOdabraniUcenici.SelectedItem.ToString();
                        samoBroj = broj.Remove(broj.IndexOf(" "),broj.Length-broj.IndexOf(" "));
                        idu = Convert.ToInt32(samoBroj);
                        string idodel=this.txtID.Text;
                                    
                    
                        //provera
                        
                        foreach (DataRow dr in this.dsPripada1.Tables["Pripada"].Rows)
                        {
                            if (idu.ToString()==dr["id ucenika"].ToString())        
                            {
                                stani=true;
                            MessageBox.Show("Ucenik je vec dodeljen odelenju");
                            }

                        }

                            if (stani==false)
                            {

                                DataRow row = this.dsPripada1.Tables["Pripada"].NewRow();
                                this.sqlConnection1.Close();
                                this.sqlConnection1.Open();
                                this.sqlDataAdapterPripada.InsertCommand=new SqlCommand("INSERT INTO Pripada ([id ucenika], [id odelenja]) VALUES ("+idu+", '"+idodel+"')", this.sqlConnection1);
                                this.sqlDataAdapterPripada.InsertCommand.ExecuteNonQuery();
                                this.sqlDataAdapterPripada.Update(this.dsPripada1, "Pripada");
                                this.sqlConnection1.Close();
                                MessageBox.Show("Uspesna dodela");
                                stani=true;
                            }
                    
                        }
                
                    }
                
        
            
                if (stani==true)
                {

                    for (int i=0; i<this.clbSviUcenici.Items.Count; i++)
                        this.clbSviUcenici.SetItemChecked(i, false);
                    this.lbOdabraniUcenici.Items.Clear();
                }
            
                
            }
[ bigguy @ 20.03.2009. 10:12 ] @
A kako da u Listbox-u napravim da imam ono npr. Podesavanje, Kreiranje, Brisanje,.... a da ispred svakog items-a stoji plus, tako da kada kliknem na njega onda mi se otvore subitems-i onako povezani sa isprekidanim strelica sa plusem koji se sad permutirao u minus?
[ bigguy @ 20.03.2009. 12:10 ] @
.....ili je to u panelu odradjeno?! Ali opet kako onda?