• 4 odgovora
  • 4.058 pregleda
ADO.NET CurrencyManager i ListBox kontrola, problemchic... 26.02.2006. u 16:33 · pre 251 meseci #1
Dakle ovako :
imam listBox na formi koji je povezan sa tabelom u bazi. Zatim imam tri dugmeta: ADD, REMOVE i REFRESH .

Program redi sledece:

ADD = doda podatak u bazu (to radi)
REMOVE = obrishe podatak iz baze (takodje radi)
REFRESH = osvezi ListBox ( pomocu CurrencyManager.Refresh() i DataAdapter.Fill() )

problem je sto REFRESH posle ADD radi kako treba, i doda zapis u ListBox, ali posle REMOVE ne radi kako treba i nece da ukloni zapis iz list box-a (iako ga ukloni iz baze)!!!

Sta nije u redu?

Pozdrav svima...
Re: ADO.NET CurrencyManager i ListBox kontrola, problemchic... 27.02.2006. u 12:04 · pre 251 meseci #2
Citat:
era1: Dakle ovako :
imam listBox na formi koji je povezan sa tabelom u bazi.


Kako je povezan sa bazom ?
Preko dataset-a ili na neki drugi nacin .
Ako je preko DataSet-a onda je i logicno da ga prikazije posle brisanja
jer podatak jos uvek postoji u DataSet-u samo je markiran za brisanje .
U tom slucaju traba da ili posle brisanja ponovo ucitas DataSet ili da eksplicitno
obrises doticni podatak iz dataset-a ili da koristis recimo
Code:
DataSetxx.DataTableyy.DefaultView.RowStateFilter = .... 

da bi filtrirao slogove koje zelis da prikazes
Ima mnogo nacina , sve zavisi sta ti treba .


Potpis
Ako kaniš pobijediti , ne smiješ izgubiti.
Re: ADO.NET CurrencyManager i ListBox kontrola, problemchic... 27.02.2006. u 15:54 · pre 251 meseci #3
Povezan je preko dataseta.

Pokusao sam da ucitam ponovo dataset pomocu DataAdapter.Fill(dataset, "TABELA") pa nije pomoglo, zatim sam pokusao da prvo ocistim dataset DataSet.TABELA.DataRows.Clear() pa da onda odradim Fill ali nije pomoglo.

Pa me interesuje jel ima jos neki nacin da ucitam dataset ?

Posebno ne kontam jednu stvar:
Metoda AcceptChanges() objekta DataSet bi trebala da omoguci prihvatanje promena u dataSetu (znaci da red koji je markiran za brisanje obrishe). Zatim kada pozovem CurrencyManager.BindingContext.refresh() treba sve te promene da prenese na kontrlole na formi. Ali ni to ne radi...

pozdrav...
Re: ADO.NET CurrencyManager i ListBox kontrola, problemchic... 28.02.2006. u 08:46 · pre 251 meseci #4
pozabavio sam se malo problemom i napravio jedan primer .
primer je za access Northwind bazu i tablu Categories , zbog jednostavnosti
Konekcija , Adapter i dataset su generisani a povezivanje ListBox-a je preko designera .

Ovde ti refresh i ne treba , sve radi i bez toga


U initializecomponents metodi forme ide sledeci kod ( inace genrisan u dizajneru )

Code:

this.listBox1.DataSource = this.dataSet11.Categories;
            this.listBox1.DisplayMember = "CategoryName";
            this.listBox1.Location = new System.Drawing.Point(36, 24);
            this.listBox1.Name = "listBox1";
            this.listBox1.Size = new System.Drawing.Size(268, 160);
            this.listBox1.TabIndex = 0;
            this.listBox1.ValueMember = "CategoryID";


Glavni deo koda za brisanje i dodavanje je

Code:

static void Main() 
        {
            Application.Run(new Form1());
        }

        private void Form1_Load(object sender, System.EventArgs e)
        {
            this.oleDbDataAdapter1.Fill(this.dataSet11);
        }

        private void buttonAdd_Click(object sender, System.EventArgs e)
        {
            //Add new Category
            DataSet1.CategoriesRow r;
            r = this.dataSet11.Categories.AddCategoriesRow("New Cat","NEw CAT DES");
            this.oleDbDataAdapter1.Update(dataSet11);
            this.dataSet11.AcceptChanges();
            
            
            
        }

        private void buttonRemove_Click(object sender, System.EventArgs e)
        {
            int index ;
            index = this.listBox1.SelectedIndex;
            this.dataSet11.Categories.Rows[index].Delete();
            this.oleDbDataAdapter1.Update(this.dataSet11);
            this.dataSet11.AcceptChanges();
        }
    }
}

Potpis
Ako kaniš pobijediti , ne smiješ izgubiti.
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme