[ duchess @ 01.03.2008. 16:36 ] @
| Zdravo
Zanima me da li je moguce da se dodaju nove kolone u GridView ukoliko se izvrsi odredjeni IF statment
Npr
Imam jedan GridView koji vuce podatke iz tabele artikli.
ispod imam jednu dropdownlistu koja je autopostback i pri promeni vrednosti se aktivira dogadjaj
protected void DropDownList3_SelectedIndexChanged(object sender, EventArgs e)
{
DropDownList ddl = (DropDownList)sender;
string uspeh = "";
string uspeh1 = "";
string uspeh2 = "";
if (ddl.SelectedValue == "1")
{
SqlDataSource1.SelectCommand = "SELECT * FROM ViewFrizidera";
uspeh = "SELECT * FROM ViewFrizidera";
}
if (ddl.SelectedValue == "2")
{
SqlDataSource1.SelectCommand = "SELECT * FROM ViewVitrine";
uspeh1 = "SELECT * FROM ViewVitrine";
}
if (ddl.SelectedValue == "3")
{
SqlDataSource1.SelectCommand = "SELECT * FROM ViewKlime";
uspeh2 = "SELECT * FROM ViewKlime";
}
if (uspeh != null)//ukoliko je prosao prvi IF onda ce se ovaj IF izvrsavati
{
// ovde treba da stoji kod koji dodaje novu kolonu u GridView, ukoliko je ispunjen gornji uslov
}
Citava situacija ide ovako. SqlDataSource1 vuce podatke iz tabele artikli. Kada se izabere prva vrednost (1) iz dropdownliste treba da se taj SqlDataSource1 promeni u odgovarajuci View, koji vuce iste podatke, sa nekim novim kolonama (koje treba da se dodaju u gridView, kako bi se videle)
Sve savrseno funkcionise, ali ne znam kako da prilikom izvrsavanja odredjenog IF-a dodam tu novu kolonu (iz View-a) u GridView?
Hvala unapred
Ivana |
[ Rockovic @ 03.03.2008. 13:36 ] @
Greska...
[ Rockovic @ 03.03.2008. 13:40 ] @
Bez testiranja...
if (uspeh != null)//ukoliko je prosao prvi IF onda ce se ovaj IF izvrsavati
{
// ovde treba da stoji kod koji dodaje novu kolonu u GridView, ukoliko je ispunjen gornji uslov
DataTable dt = dal.Get_TableViewProdukti(uspeh) // Poziv za tvoju metodu u DataAccessLayer-u (dal)
for each(datarow r in dt.rows)
{
foreach(datacolumns c in datatable.columns)
{
BoudField column = new BoudnField();
c.DataField = c.ColumnName.ToString();
c.ItemStyle.Wrap = false;
tvojGridView.Columns.Add(c)
}
}
}
Ti u loopu mozes probati dodati/menjati osobine kolone po zelji ili potrebi (npr. SortExpression). Ponavljam ovo je bez testiranja. Nadam se da ce biti od pomoci.
[ duchess @ 03.03.2008. 17:17 ] @
izvini ako je ovo glupo pitanje, ali kako da znam sta je kod mene taj "dal" - DataAccess Layer? Gledala sam po netu i sve mi izbacuje neke primere za windows aplikacije, preko DataSet-a... Nisam naglasila da je ovo asp.net aplikacija 3.5framework... :S
[ Rockovic @ 04.03.2008. 09:12 ] @
Moja greska... Nema glupih pitanja, samo glupih odgovora =). Malo sam nepromisljeno i na brzinu odgovorio. Iskreno, nisam ni video da je u pitanju SqlDataSource... Ja sam u brzini napisao kod za dodavanje kolone "na stari nacin"...
SqlDataSource bi trebao "sam" (na osnovu vrednosti u SqlCommand) da poveze odgovarajuci skup produkata. Cini mi se da bi ti jedino trebala u "IF (uspeh != null) " delu tvog scripta ponovo dodeliti ovaj put "promenjeni" SqlDataSource1 i ponovo pozvati "DataBind()" metodu. To bi trebalo da izgleda otprilike ovako:
if (uspeh != null)//ukoliko je prosao prvi IF onda ce se ovaj IF izvrsavati
{
// ovde treba da stoji kod koji dodaje novu kolonu u GridView, ukoliko je ispunjen gornji uslov
TvojGridView.DataSourceID = SqlDataSource1.ID
TvojGridView.DataBind()
}
To bi trebalo da pokaze odgovarajuce produkte sa svojim kolonama. Ja sam malo radio sa SqlDataSource tako da ne mogu da garantujem nista ali se nadam da ce ovo biti od koristi.
[ duchess @ 04.03.2008. 12:27 ] @
Hvala ti puno na odgovoru, mnogo mi je pomoglo. Sve sto sam trebala jos uraditi jeste da promenim osobinu GridViw-a "AutoGenerateColumns" da bude true, i sve radi super
Jos jednom hvala i pozdrav!
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.