Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

C# pretraga korisnika (iz baze) kroz textbox i prikaz u listview-u

  • 24 odgovora
  • 8.839 pregleda

Najnovija ↓

C# pretraga korisnika (iz baze) kroz textbox i prikaz u listview-u 15.03.2010. u 19:03 · pre 202 meseca #1
Hteo bih da zamolim nekog ako moze da mi pomogne oko pretrage u C#-u,
radi se o sledecoj stvari...
Imam tabelu korisnik u bazi, sa njenim atributima, npr. naziv firme(koji je kriterijum za pretragu)...
Stvar je sledeca: kad upisem neko pocetno slovo u textbox treba da mi se u listview-u prikaze samo
naziv(i) koji pocinje sa tim slovom...

Hvala unapred!!!
Re: C# pretraga korisnika (iz baze) kroz textbox i prikaz u listview-u 15.03.2010. u 19:47 · pre 202 meseca #2
Ne radim u c#, ali evo kako sam to resio u vb.net, malo ga samo prilagodi:

Code:
Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
        ListView1.Items.Clear()
        If TextBox1.Text = Nothing Then
            ListView1.Items.Clear()

            Try
                oledbcon.Open()

                str = "SELECT * FROM Korisnik ORDER BY Ime"
                cmd = New OleDbCommand(str, oledbcon)
                objRead = cmd.ExecuteReader


                While objRead.Read


                    lv = Me.ListView1.Items.Add(objRead("Ime").ToString)
                    lv.SubItems.Add(objRead("Prezime").ToString)
                    

                End While


                objRead.Close()
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            Finally
                If ListView1.Items.Count = 0 Then

                Else
                    ListView1.Items(0).Selected = True
                    ListView1.Select()
                End If
                oledbcon.Close()
            End Try
        End If
        Try

            oledbcon.Open()

            str = "SELECT * FROM Korisnik WHERE Ime LIKE'" & TextBox1.Text & "%'"
            cmd = New OleDbCommand(str, oledbcon)
            objRead = cmd.ExecuteReader


            While objRead.Read


                lv = Me.ListView1.Items.Add(objRead("Ime").ToString)
                lv.SubItems.Add(objRead("Prezime").ToString)
                
            End While


            objRead.Close()
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        Finally

            oledbcon.Close()
        End Try
    End Sub



Potpis
"Ne menjaj nesto sto te sasvim dobro sluzi, ne trazi leba preko pogace" - Aleksandar Andrijevic
Re: C# pretraga korisnika (iz baze) kroz textbox i prikaz u listview-u 15.03.2010. u 23:30 · pre 202 meseca
izmenjeno 1 put, poslednji put Laki123 15.03.2010. u 23:40
  1. Laki12315.03.2010. u 23:40zapis iz teksta poruke
#4
Primer u C#. Prva tri reda su globalna za celu formu. Kod učitavanja forme, pomoću data adaptera učitaš podatke iz baze u data set. Zatim napraviš objekat DataView. U događaju TextChanged samo pozivaš svojstvo RowFilter. Znači ne moraš svaki put uzimati podatke iz baze, što će verovatno imati efekta na brzinu, mana je naravno što ćeš celu tabelu imati u memoriji.
Code:

OleDbConnection konekcija = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:\\Database1.mdb");
DataSet ds = new DataSet();
DataView pogled;

public Form1()
{
    InitializeComponent();
    string upit = "SELECT * FROM Korisnik";
    OleDbDataAdapter adapter = new OleDbDataAdapter(upit, konekcija); 
    adapter.Fill(ds);
    pogled = new DataView(ds.Tables[0])
}

private void textBox1_TextChanged(object sender, EventArgs e)
{
    pogled.RowFilter = "[Naziv firme] LIKE '" + textBox1.Text + "%'";
    dataGridView1.DataSource = pogled;
}


I drugi način je sličan kao u prethodnom postu:
Code:

private void textBox1_TextChanged(object sender, EventArgs e)
{
    OleDbConnection OleDbKonekcija = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:\\Database1.mdb");
    OleDbCommand komanda = OleDbKonekcija.CreateCommand();
    DataTable rezultat = new DataTable();
    komanda.CommandText = "SELECT * FROM Korisnik WHERE [Naziv firme] LIKE '" + textBox1.Text + "%'";
    try
    {
        komanda.Connection.Open();
        OleDbDataReader citac = komanda.ExecuteReader();
        rezultat.Load(citac); //ucitavanje podataka u DataTable
        citac.Close();
        dataGridView1.DataSource = rezultat;
    }
    catch
    {
    }
    finally
    {
        komanda.Connection.Close(); //na kraju se zatvara konekcija
    }
}


Uf, sad tek vidim da tebi treba prikaz u ListView, a ja korisio GridView :(
Re: C# pretraga korisnika (iz baze) kroz textbox i prikaz u listview-u 19.03.2010. u 13:32 · pre 202 meseca #6
Citat:
neskokejdz: Hvala puno na odgovoru, znaci mi, samo ako bi neko mogao da mi pojasni kako bi to mogao da uradim sa ListView kontrolom,
umesto DataGridView-a.
Hvala unapred.....


Svojstvo kontrole listView1 View možeš postaviti na List.
Code:

private void textBox1_TextChanged_1(object sender, EventArgs e)
{
    listView1.Items.Clear();
    OleDbConnection OleDbKonekcija = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:\\Database1.mdb");
    OleDbCommand komanda = OleDbKonekcija.CreateCommand();
    komanda.CommandText = "SELECT * FROM Korisnik WHERE [Naziv firme] LIKE '" + textBox1.Text + "%'"; //umesto * možeš navesti samo [Naziv firme]
    try
    {
        komanda.Connection.Open();
        OleDbDataReader citac = komanda.ExecuteReader();
        while (citac.Read())
        {
            listView1.Items.Add(citac["Naziv firme"].ToString());
        }
    }
    catch
    {
    }
    finally
    {
        komanda.Connection.Close(); //na kraju se zatvara konekcija
    }
}
Re: C# pretraga korisnika (iz baze) kroz textbox i prikaz u listview-u 22.03.2010. u 05:48 · pre 202 meseca #7
Video sam da je kod u redu, probao ali nece da pretrazuje verovatno zbog naziva kolone u bazi podataka...
Kriterijum po kom zelim da mi se pretrazuje u textboxu je ImeDuznika(ovo je tacan naziv kolone u tabeli u bazi podataka)...
Znaci npr. imam sacuvanog duznika pod nazivom Kristal, kada ukucam u textbox K, zelim da mi ispise sve duznike pod tim pocetnim slovom...

Sta treba tacno napisati u onom delu koda gde je SQL upit???

Jer je to kljucna stvar....
Hvala na pomoci, znacila mi je jako puno, pogotovu zbog ucenja!!!
Re: C# pretraga korisnika (iz baze) kroz textbox i prikaz u listview-u 22.03.2010. u 11:42 · pre 202 meseca #10
Pa zbog ovoga
Code:
komanda.CommandText = "SELECT * FROM Korisnik WHERE [Naziv firme] LIKE '" + textBox1.Text + "%'"; //umesto * možeš navesti samo [Naziv firme]


Ovo selektuje sve iz tabele Korisnik gde je jedini uslov uneti text iz textbox-a i popunjuje listview.
Potpis
http://i.imgur.com/V3feW.jpg
http://on.wsj.com/H9yjz6 -- India Graduates Millions, but Too Few Are Fit to Hire
Re: C# pretraga korisnika (iz baze) kroz textbox i prikaz u listview-u 23.03.2010. u 08:54 · pre 202 meseca #14
Prvo ne treba ti:

Code:
komanda.CommandText = "SELECT ImeDuznik FROM Duznik WHERE ImeDuznik LIKE '" + tbDuznik.Text + "%'"; //umesto * možeš navesti samo [Naziv firme]


nego samo
Code:
komanda.CommandText = "SELECT * FROM Duznik WHERE ImeDuznik LIKE '" + tbDuznik.Text + "%'"; //umesto * možeš navesti samo [Naziv firme]



Drugo mozes da probas da proglasis na primer:

Code:
ListViewItem lv = new ListViewItem();


pa tek onda:

Code:
while (citac.Read())
                {
                    lv = listViewDuznici.Items.Add(citac["ImeDuznik"].ToString());
                    
                }


I stavljaj exceptions za testiranja.Doduse to sam uradi jer nije isto kod mene za VB.NET i C#.





Potpis
"Ne menjaj nesto sto te sasvim dobro sluzi, ne trazi leba preko pogace" - Aleksandar Andrijevic
Re: C# pretraga korisnika (iz baze) kroz textbox i prikaz u listview-u 23.03.2010. u 11:04 · pre 202 meseca #15
Jedno pitanje neskokejdz.
Zasto konekcioni string cuvas u txt fajlu?

Mislim na ovo
Code (csharp):
 
public static string CitajFajl()
        {
            string conn;

            TextReader tr = new StreamReader("conn_str.txt");
            conn = tr.ReadLine();
            tr.Close();

            return conn;
        }
Potpis
http://i.imgur.com/V3feW.jpg
http://on.wsj.com/H9yjz6 -- India Graduates Millions, but Too Few Are Fit to Hire
Re: C# pretraga korisnika (iz baze) kroz textbox i prikaz u listview-u 24.03.2010. u 13:04 · pre 202 meseca #19
Ne znam zašto ne radi, verovatno je problem u SQL komandi, ovaj primer radi u Accessu. Možda probaj u samom SQL Serveru da izvršiš primer SQL naredbe, npr. SELECT ImeDuznik FROM Duznik WHERE ImeDuznik LIKE 'k%'.

Inače probaj možda da prilagodiš onaj prvi primer što sam dao, s obzirom da koristiš dataset i imaš metodu za prikaz PrikaziDuznike().
Nešto ovako.
Code:

KamateDataSet kds = new KamateDataSet();
DuznikTableAdapter dta = new DuznikTableAdapter();
DataView pogled; // ovo je dodato u tvom kodu

private void frmDuznik_Load(object sender, EventArgs e)
{
  dta.Fill(kds.Duznik);
  pogled = new DataView(kds.Duznik); // ovo je dodato u tvom kodu
  PrikaziDuznike();
}

private void tbDuznik_TextChanged(object sender, EventArgs e)
{
    pogled.RowFilter = "ImeDuznik LIKE '" + tbDuznik.Text + "%'";
    PrikaziDuznike();
}

private void PrikaziDuznike()
{
    listViewDuznici.Items.Clear();

    //Prikazivanje podataka o duznicima u ListView-u pomocu tipiziranog DataSet-a
    foreach (KamateDataSet.DuznikRow vrsta in pogled.Table.Rows) // ovo je izmenjeno u tvom kodu
    {
        ListViewItem lvi = new ListViewItem(vrsta.ImeDuznik);
        lvi.SubItems.Add(vrsta.MestoDuz);
        lvi.SubItems.Add(vrsta.FixTel);
        //U Tag smestamo id duznika
        lvi.Tag = vrsta.DuznikID;
        listViewDuznici.Items.Add(lvi);
    }
}


Nisam siguran da li će ovo raditi, ali možda probaj dodatno da prilagodiš PrikaziDuznike(), ili probaj kroz debager da vidiš zašto onaj prethodni primer ne radi.
Re: C# pretraga korisnika (iz baze) kroz textbox i prikaz u listview-u 24.03.2010. u 15:48 · pre 202 meseca #20
Ajd stavi i bazu ako nije problem...pa da vidimo sta se desava.
Sto se tice connection stringa mozes i ovako

app.config
Code:

 <appSettings>
    <add key="sqlConnectionString" value="Data Source=.\SQLEXPRESS;Initial Catalog=kamate;Integrated Security=True"/>
  </appSettings>


i u kodu
Code:

SqlConnection objConnection = new SqlConnection(ConfigurationSettings.AppSettings["sqlConnectionString"]);
Odgovori
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme