Fare una select in una tabella da un collegamento link

lunedì 10 maggio 2010 - 17.07

serrax Profilo | Junior Member

Salve a tutti...
io ho una pagina con una datagridview con all'interno alcuni prodotti ....
ora io vorrei creare un collegamento del tipo <a href=prodotti?valore= <%# %> prodotti tipo costumer<a>
in modo che mi si apra la pagina prodotti con il paramentro costumer....
vorrei in pratica che questo link mi filtrasse i valori del datagriview, in modo che mi escano solo i valori che richiedeva il link......

non so se mi sono fatto capire.....spero di si.....

grazie a tutti...
ciao

alx_81 Profilo | Guru

>Salve a tutti...
Ciao

>io ho una pagina con una datagridview con all'interno alcuni
>prodotti ....
>ora io vorrei creare un collegamento del tipo <a href=prodotti?valore=
><%# %> prodotti tipo costumer<a>
>in modo che mi si apra la pagina prodotti con il paramentro costumer....
>vorrei in pratica che questo link mi filtrasse i valori del datagriview,
>in modo che mi escano solo i valori che richiedeva il link......
basta usare il normale binding di asp.net. Ma se hai configurato il gridview per usare i suoi campi autogenerati, dovrai creare la colonna appositamente creandi un template della colonna in questione, per creare il link come ti serve.
In poche parole, la colonna che deve contenere il link deve avere un templateField ed, al suo interno, un ItemTemplate in cui è definito il formato. In esso quindi dovrai andare a mettere il tuo link.

>grazie a tutti...
di nulla!

--

Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

serrax Profilo | Junior Member

ciao.....
grazie per avermi risposto....
in effetti il mio problema è un altro..... perchè io non devo modificare il gridview da un link che è presente nel datagrid stesso, ma il link si trova in un'altra pagina..... è questo il problema......

spero di essermi spiegato meglio ....

grazie

alx_81 Profilo | Guru

>spero di essermi spiegato meglio ....
fammi capire, tu hai una pagina dove hai salvato il link, vuoi passarlo ad un'altra pagina per creare il link sul gridview?
credo di essermi perso, prova a spiegarmi meglio, anche con un esempio reale..

--

Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

TOPOAMORE Profilo | Expert

Allora dal link tu devi caricare i dati nel datagrid....giusto?

allora se nel link sono presento parametri querystring allora puoi fare in questo modo:

'Restituzioni varibili dalla querystring dim param1 as string=request.querystring("param1") dim param2 as string=request.querystring("param2") 'Creazione del Command dim cmd as new oledb.oledbcommand("select * from Tabella where a=" & param1 & " and b=" & param2) dim cmd.connection = conn' connessione al tuo db 'popolamente dataset dim da as new dataadapter dim ds as new dataset da.fill(ds) 'aggiornamento datagrid datagrid.datasource=ds

ho scritto tutto al volo e se ci sono errori posta non ci sono problemi

vedi se ti va bene

ciaoooo
ASP 2.0 - VB 2008

serrax Profilo | Junior Member

ciao a tutti...
allora provo a farmi capire meglio.....

il datagrid si trova nella pagina prodotti.aspx
il link si trova nella pagina index.aspx

nel datagrid ci sono dei prodotti tipo (faccio solo un esempio) magliette di varie misure.....
il link è "magliette taglia 19 "

ora.... come faccio dal link della pagina index.aspx a far visualizzare nel datagrid della pagina prodotto.aspx solo le magliette di taglia "19" ??

spero di esser stato più chiaro.....
grazie a tutti per la pazienza

alx_81 Profilo | Guru

>ora.... come faccio dal link della pagina index.aspx a far visualizzare
>nel datagrid della pagina prodotto.aspx solo le magliette di
>taglia "19" ??
allora segui il consiglio di TOPOAMORE.
Considera che nella pagina di partenza componi il link. Quando clicki su di esso parte la seconda pagina, la quale avrà in sè definito il codice consigliato da TOPOAMORE.

--

Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

serrax Profilo | Junior Member

ok.... allora sto provando, ma non so come "formulare" il link per richiamare il comando .....
tra l'altro io uso c# (anche se non è un problema convertire il codice) .... però non ho capito dove inserire il codice di topo amore semplicemente perchè nel page_Load ho già una Select... in pratica c'è già questo codice:

MySqlConnection connection;
MySqlDataAdapter adapter;
string query;
connection = new MySqlConnection("server=localhost; username=root; password=giovanni; database=prodotti;");
query = "SELECT * FROM monitor ORDER BY prezzo;";
adapter = new MySqlDataAdapter(query, connection);
DataSet ds = new DataSet();

adapter.Fill(ds, "monitor");
myDatagrid.DataSource = ds.Tables["monitor"].DefaultView;
myDatagrid.DataBind();

consigli??
grazie

alx_81 Profilo | Guru

>ok.... allora sto provando, ma non so come "formulare" il link
>per richiamare il comando .....
>tra l'altro io uso c# (anche se non è un problema convertire
>il codice) .... però non ho capito dove inserire il codice di
>topo amore semplicemente perchè nel page_Load ho già una Select...
consideriamo la problematica step by step:

1) pagina di partenza.
In questa page devi creare il link usando l'informazione che ti serve per comporre il link .
Cosa ti blocca?

2) pagina di destinazione.
In questa devi andare a leggere con l'oggetto request l'informazione passata dalla pagina del punto 1).
Una volta che hai quello che ti serve esegui la select facendo una query parametrica..
cerca di usare i parameters, e non la concatenazione, così eviti anche il sql injection.
--

Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

serrax Profilo | Junior Member

ok allora...
io sono fresco di asp.net e mysql ....
quindi....

1) il link della pagina 1 non so come impostarlo.... nel senso richiamo la pagina normalmente con <a href='prodotto.aspx?taglia= ????????'><a>
ma è proprio dopo l'uguale è che non so proprio cosa metterci per far si che nella pagina prodotto.aspx venga richiamata la select desiderata...

2) la pagina 2 viene raggiunta da un'altra pagina, dove di default visualizza tutti i prodotti indipendentemente dalla "taglia" .....
(per questo non so come gestire questa nuova indicazione)

3) onestamente, causa la mia ignoranza, non so cosa sia la sql injection..... cmq ora mi informerò....

ciao e grazie

Gluck74 Profilo | Guru

Ciao
Potresti anche usare il gridView attaccato direttamente ad un semplice SQLDataSource.
Da progettazione pagina potresti fare tutto con pochi semplici click seguando il widzard.

Ecco la soluzione.
nella prima pagina hai un elenco di link:
<a href=prodotti?valore=consumer> <a href=prodotti?valore=SOHO> <a href=prodotti?valore=promotional> <a href=prodotti?valore=cheSo> <a href=prodotti?valore=qualsiasicosa>

quando fai click su un link, la pagina "prodotti" viene caricata con il parametro "valore" che ha valore indicato nel link (consumer, soho, ecc....)

con il codice seguente viene richiamata la query passando appunto questo parametro ed il relativo valaore.

<asp:SqlDataSource ID="SqlDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>" SelectCommand="SELECT [ProductName] FROM [Products] WHERE ([Tipologia] = @Category)"> <SelectParameters> <asp:QueryStringParameter Name="Category" QueryStringField="valore" Type="Int32" /> </SelectParameters> </asp:SqlDataSource>

a questo punto devi solo collegare una gridview ai dati (come detto prima, puoi fare tutto da interfaccia).
La soluzione totale è:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource"> <Columns> <asp:BoundField DataField="ProductName" HeaderText="ProductName" SortExpression="ProductName" /> </Columns> </asp:GridView> <asp:SqlDataSource ID="SqlDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>" SelectCommand="SELECT [ProductName] FROM [Products] WHERE ([Tipologia] = @Category)"> <SelectParameters> <asp:QueryStringParameter Name="Category" QueryStringField="valore" Type="Int32" /> </SelectParameters> </asp:SqlDataSource>

serrax Profilo | Junior Member

Ciao,
purtroppo non riesco a selezionare un'origine dati causa vari motivi di connettori Mysql etc. etc.....

purtroppo ancora non riesco a risolvere il problema.... qualcuno ha dei consigli???

grazie a tutti

Gluck74 Profilo | Guru

be, credo che sia necessaria almeno una lettura di una qualsiasi guida.
È molto difficle se non conosci proprio nulla di come funziona asp.net e di come si compone una querystring.

Scusa per la franchezza

serrax Profilo | Junior Member

ciao, no figurati, anzi aprrezzo la franchezza....

a tal proposito se hai una guida da consigliarmi sarebbe ottimo ....

TOPOAMORE Profilo | Expert

Ciao...

ma hai provato a seguire il mio consiglio???

cosa non ti è chiaro???
ASP 2.0 - VB 2008

serrax Profilo | Junior Member

ciao topoamore.....
allora guarda il problema non è come scegliere i valori alla tabella... il problema è nel codice c# poichè come ho già detto in precedenza nella classe page_load ho già un richiamo ad un datagrid, poichè vi spiego....

nella pagina dei prodotti c'è già un datagrid, che è collegato al page_load del file c# dove:

public void Page_Load(object sender, EventArgs e)
{ connection = new MySqlConnection("server=localhost; username=root; password=giovanni; database=prodotti;");
query = "SELECT * FROM magliette ORDER BY prezzo;";
adapter = new MySqlDataAdapter(query, connection);
DataSet ds = new DataSet();
}

in prativa devo creare un link che mi apre la pagina con tutti i parametri (un link standard che c'è già), e un link che mi apre la pagina dove nel datagrid stesso mi escono solo i valori dichiarati per esempio la taglia delle magliette.....
.... non so se devo fare un'altra classe e/o cosa inserire dentro..... o meglio come richiamare il linq della querystring....

La query string io l'ho già utilizzata nel datagrid in questo modo:
<a href='details.aspx?modello=<%# DataBinder.Eval(Container.DataItem, "modello") %>'>
dove nella pagina di destinazione ho questo codice...

connection = new MySqlConnection("server=localhost; username=root; password=giovanni; database=prodotti;");
query = ("SELECT img, modello, descrizione1, descrizione, disponibilita, prezzo FROM monitor WHERE modello='" + Request.QueryString["modello"].ToString() );

però "modello" è un dato che è nel db a cui fa riferimento il datagrid nel file c# .....
non so come indicare direttamente il valore nel link ......
il problema mio è sicuramente che ho pochissima conoscenza sia di asp.net che di c#, ma sto cercando di imparare.... vi prego perdonate la mia ignoranza......

e grazie per i consigli e la pazienza...
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5