39 messaggi dal 20 ottobre 2006
Ciao a tutti, ho una gridview associata ad un sqldatasource.
Ho anche una dropdownlist dove ho messo tutte le lettere dell'alfabeto,che
dovrei usare per filtrare la gridview in base alla lettera scelta nella
dropdownlist.
(es. scelgo la lettera A, VORREI vedere nella griglia solo
i nominativi delle persone che iniziano con la A.)Ho anche tutti in questa
lista di valori...come gestirlo?

Ieri non ne sono arrivato a capo, qualcuno puo' aiutarmi,Se possibile vorrei agire sul sqldatasource non sul gridview.

Daniele
652 messaggi dal 21 gennaio 2007
Contributi
Ciao !
Devi fare una query parametrica.
Qua trovi la documentazione su come utilizzare il controllo SqlDataSource abbinato all'utilizzo dei parametri:
http://msdn.microsoft.com/en-us/library/z72eefad.aspx

la query che dovrai scrivere sarà tipo:

SELECT * FROM tabella WHERE colonna LIKE @parametro + '%'


poi leghi al sqlDataSource un parametro di tipo ControlParameter che preleva il valore dalla tua DropDownList. Una cosa del genere:

<SelectParameters>
    <asp:ControlParameter ControlID="dropDownList1" PropertyName="SelectedValue" Name="parametro" Type="String" />
</SelectParameters>
39 messaggi dal 20 ottobre 2006
ok, il metodo e' giusto.
Nella dropdownlist ho anche TUTTI come valore, che
deve mostrare tutti gli elementi della gridview.
Ho aggirato il problema cosi':
sull'evento della dropdownlist, SelectedIndexChanged

if (DropDownList1.SelectedValue.Equals("tutti"))
{
SqlDataSource2.SelectCommand = "SELECT * FROM [NomeTabella]";
}

Il problema pero' e' che vorrei che TUTTI fosse il valore di default al
primo avvio dell'applicazione. Come fare??


Daniele
Modificato da daniele1975 il 06 novembre 2008 11.48 -
652 messaggi dal 21 gennaio 2007
Contributi
lo devi preselezionare sulla tua dropdownlist.
qunidi o con

<asp:ListItem Text="Tutti" Value="Tutti" Selected="true" />


o nel Page_Load con

if(!IsPostBack)
  dropDownList1.Items.FindByValue("Tutti").Selected = true;
39 messaggi dal 20 ottobre 2006
ho fatto cosi':
ho messo di default selected Tutti cosi':
<asp:ListItem Text="Tutti" Value="Tutti" Selected="true" />

e poi fatto questo controllo
if (DropDownList1.SelectedValue.Equals("Tutti"))
SqlDataSource2.SelectCommand = "SELECT * FROM [Rubrica]";

Se il valore selezionato e' tutti devo fare un'altra query senza la like.

Che ne dici Giuseppe, ti sembra una buona soluzione..?
39 messaggi dal 20 ottobre 2006
ho fatto cosi':
ho messo di default selected Tutti cosi':
<asp:ListItem Text="Tutti" Value="Tutti" Selected="true" />

e poi fatto questo controllo
if (DropDownList1.SelectedValue.Equals("Tutti"))
SqlDataSource2.SelectCommand = "SELECT * FROM [Rubrica]";

Se il valore selezionato e' tutti devo fare un'altra query senza la like.

Che ne dici Giuseppe, ti sembra una buona soluzione..?
652 messaggi dal 21 gennaio 2007
Contributi
se funziona è sempre una buona soluzione

no, scherzi a parte, si non è male.. ma conta che puoi fare sempre meglio evitando di utilizzare i SqlDataSource e costruendoti un domain model ben strutturato.
39 messaggi dal 20 ottobre 2006
spiegati meglio...se puoi, le soluzioni migliorative sono sempre le benvenute..
e di solito le tue le sono...:)!

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.