[ basara @ 17.01.2012. 19:29 ] @
Popunjavam ddl listu podacima iz SQL baze, medjutim pored stavki (povucenih proizvodjacs iz baze), potrebno mi je da imam jednu koja ce znaciti "sve".
Da sa ddl liste mozemo odabrati konkretnog proizvodjaca ili sve proziv.
[ vujkev @ 17.01.2012. 23:25 ] @
... a pitanje je šta?

Kako da dodaš elemenat "sve" u listu, kako da izvučeš "sve" elemente iz baze, kako da se povežeš na bazu........?
[ basara @ 17.01.2012. 23:49 ] @
:) ok, sad vidim da bas i nisam bila precizna. Htela bih da dodam taj element u listu. Posto listu punim podacima iz baze, ne znam kako to da naknadno dodam. Pa kad se ne odabere konkretan, u ovom slucaju, proizvodjac, da prikaze sve proizvodjace.
[ basara @ 17.01.2012. 23:50 ] @
btw. znam kako da se konektujem na bazu i izvucem iz baze podatke koji su mi potrebni.
[ Shadowed @ 18.01.2012. 00:02 ] @
'Aj bas da vidimo znas li!
Salim se

Razlog zasto bi bilo dobro da napises kako popunjavas bez tog "sve" je taj sto se to moze uraditi na vise nacina pa da ne nabadamo sta tebi odgovara nego da mozemo da ti predlozimo ono sto se uklapa u to sto vec imas.
[ basara @ 18.01.2012. 00:15 ] @
ddlProizvodjac.Items.Clear();


SqlCommand kom= new SqlCommand();
kom.Connection = konekcija;
kom.CommandText = "SELECT * FROM Proizvodjac ORDER BY nazPr";
SqlDataReader citac;


try
{
konekcija.Open();
citac = kom.ExecuteReader();

while (citac.Read())
{
ListItem stavka = new ListItem();
stavka.Text = citac["nazPr"].ToString();
stavka.Value = citac["sifPr"].ToString();
ddlProizvodjac.Items.Add(stavka);

}

citac.Close();
}

...
[ vujkev @ 18.01.2012. 01:15 ] @
najjednostavnije

Code (csharp):
 ddlProizvodjac.Items.Clear();


        SqlCommand kom= new SqlCommand();
        kom.Connection = konekcija;
        kom.CommandText = "SELECT * FROM Proizvodjac ORDER BY nazPr";
        SqlDataReader citac;


        try
        {
            konekcija.Open();
            citac = kom.ExecuteReader();

            ListItem stavka = new ListItem();
            stavka.Text = "sve"
            stavka.Value = "0"  //pretpostavljam da "0" ne može da bude šifra u bazi
            ddlProizvodjac.Items.Add(stavka);

            while (citac.Read())
            {
                ListItem stavka = new ListItem();
                stavka.Text = citac["nazPr"].ToString();
                stavka.Value = citac["sifPr"].ToString();
                ddlProizvodjac.Items.Add(stavka);

            }
           
            citac.Close();
        }

    ...
[ Shadowed @ 18.01.2012. 07:43 ] @
To ti nece poleteti :) Ali je ok ideja.
Druga varijanta bi bila da doda UNION SELECT 0, "Sve" u sql query (uz pretpostavku da ima samo dve kolone, inace bi trebala da prepravi onu zvezdicu u svakom slucaju da ne dovlaci nepotrebne podatke).
[ basara @ 18.01.2012. 13:50 ] @
Ovo prvo 'nije poletilo'... Probala sam da u petlji ne pravim novu stavku,izbacila sam red - ListItem stavka = new ListItem(); Ali ne funkcionise.
A ovaj drugi predlog nisam bas najbolje razumela, dodala sam u sql query UNION SELECT:
"select sifPr, nazPr from Proizvodjac union select 0 from Proizvodjac 'sve'", ali mi nije bas najjasnije sta s tim mogu da postignem. Izbaci mi gresku:
"All queries combined using a UNION, INTERSECT or EXCEPT operator must have an equal number of expressions in their target lists.".

Inace, koristim Repeater za prikaz svih automobila tj. slika i osnovni podaci o kolima. Ali sam htela da omogucim pretragu gde se mogu odabrati kola odredjenog proizvodjaca, model ili cena. Pa bi trebalo da pre nego sto korisnik odabere kriterijum za pretgrau inicijalno budu prikazani svi automobili sa ponude (to pre pretrage sam uradila). Mogu da izbegnem to 'svi' u ddl listi, ali i dalje ne znam da povezem Repeater sa listom, posto sam njega odradila u wizardu a ne u kodu. Kada je odabran odredjeni proizvodjac, kako da popunim repeater tabelu samo s kolima tog proizvodjaca.

Uglavnom, htela bih da postignem nesto slicno ponudi na ovom sajtu : http://www.autosabac.rs/main/search/search.php

Pocetnik sam u ovome, pa mi zaista treba pomoc. Nadam se da sam sad bila konkretnija. Hvala puno u svakom slucaju.
[ aca andrijevic @ 18.01.2012. 15:30 ] @
Mozes da napises proceduru kojoj ces da prosledjujes promenljive u zavisnosti od filtera koji trazis.Ovo ti
pisem malo iz glave jer nemam VS kod sebe trenutno, mozda ima nekih greskica u sintaksi a i rdjav sam u C#
8).Uzmimo primer sa sajta kojeg si navela:

Code (csharp):

//Izdeklarisi globalne promenljive
string proizvodjac = null;
string model = null;
int cenaOd = null;
int cenaDo = null;
string sortiraj = null;

//Procedura
private void IzvrsiUpit()
{
     ddlProizvodjac.Items.Clear()

     //Upit, uzecemo za WHERE neku vrednost koju bi trebalo da stavljas za
     //proveru id te tabele(npr. da nije 0,-1 i slicno).Pazi takodje
     //i na konverziju podataka za npr. cenu jer upit nece da ti prihvati
     //vrednosti tipa int moras da radis neku konverziju, ja to ovde nisam
     //uradio,

     string upit = "SELECT * FROM Proizvodjac WHERE proizvodjac_id <> -1" + proizvodjac + model + cenaOd + cenaDo + sortiraj;

     SqlCommand kom= new SqlCommand();
     kom.Connection = konekcija;
     kom.CommandText = upit;
     SqlDataReader citac;


     try
     {
          konekcija.Open();
          citac = kom.ExecuteReader();

          while (citac.Read())
               {
                    ListItem stavka = new ListItem();
                    stavka.Text = citac["nazPr"].ToString();
                    stavka.Value = citac["sifPr"].ToString();
                    ddlProizvodjac.Items.Add(stavka);

               }

          citac.Close();
     }
}
 


I pozivas onda na nekom event-u
Code (csharp):

private void Button1_Click(System.Object sender, System.EventArgs e)
{
     //Vrednosti ili promenljive odakle ih vec povlacis(textbox,combo itd)
     //npr

     proizvodjac = "AND nazPr = " + ComboBox1.Text
     sortiraj = "ORDER BY"+ComboBox2.Text +"DESC"

     //itd

     IzvrsiUpit()
}
 

Ako zelis sve proizvodjace, samo zameni proizvodjac sa praznim stringom.
[ Shadowed @ 18.01.2012. 15:51 ] @
Citat:
basara: Ovo prvo 'nije poletilo'... Probala sam da u petlji ne pravim novu stavku,izbacila sam red - ListItem stavka = new ListItem(); Ali ne funkcionise.

Ma dobro je to njegovo, nego je koristio isto ime promenljive. Samo promeni ime promenljive u delu pre while.
Umesto
ListItem stavka = new ListItem();
stavi na primer:
ListItem StavkaSve = new ListItem();


Citat:
basaraA ovaj drugi predlog nisam bas najbolje razumela, dodala sam u sql query UNION SELECT:
"select sifPr, nazPr from Proizvodjac union select 0 from Proizvodjac 'sve'", ali mi nije bas najjasnije sta s tim mogu da postignem. Izbaci mi gresku:
"All queries combined using a UNION, INTERSECT or EXCEPT operator must have an equal number of expressions in their target lists.".

Nisi trebala da dodajes "from Proizvodjac" nego bas onako kako sam napisao. Union ti spaja dva select-a. I sad, ti imas taj tvoj a ovaj drugi ce ti bukvalno konstruisati jedan red sa nulom i tekstom 'sve'. To ne vuce iz tabele nego kreira, zato ti ne treba from.
[ basara @ 25.01.2012. 23:45 ] @
Neko vreme sam bila odsutna, pa se tek sad vratila svom problemu.
Uspela sam da uklopim predlozena resenja, napravila dva repeatera, jedan da prikazuje sve i drugi sa filterima i setila se da koristim atribut visible ;) ....
Hvala puno na pomoci!
[ smark @ 26.01.2012. 13:45 ] @
Ja bih to najradije ovako:

Code:

IEnumerable<SomeType> dataSource = null; // Get data from DB
ddlSample.DataSource = dataSource;
ddlSample.DataTextField = "TextField";
ddlSample.DataValueField = "ValueField";
ddlSample.DataBind();
ddlSample.Items.Insert(0, new ListItem("All", "-1")); // Localize "All"


[Ovu poruku je menjao smark dana 26.01.2012. u 15:04 GMT+1]
[ basara @ 26.01.2012. 21:01 ] @
Repeator-u mogu da menjam SqlDataSource! Nisam trebala komplikovati sa visible, tako da menjam SqlDataSource u zavisnosti koji je filter izabran!
Otkud znam, mozda neko bude imao problem slican mom, pa da i ja pomognem nekom sa svojim resenjem... ;)

if (ddlModel.SelectedValue =="0")
{
Repeater1.DataSourceID = "SqlDataSource1";
}
else
{
Repeater1.DataSourceID = "SqlDataSource3";
}