Sorting & Paging

venerdì 07 aprile 2006 - 17.03

car_79 Profilo | Newbie

Salve a tutti!

problema:
ho una dropdownlist popolata da una tabella "tbCategorie" del db, ho inserito nell'isieme items della dropdownlist un valore (text="Tutto" value="0") non esistente nella tabella "tbCategorie".

Ho creato un datasource che mi estrae gli articoli dalla tabella "tbArticoli" tramite il valore selezionato nella dropdownlist.

<asp:SqlDataSource ID="scrArticoliCategoria" runat="server" ConnectionString="<%$ ConnectionStrings:dbConnectionString %>"
SelectCommand="SELECT IDArticolo, Descrizione, Immagine, Prezzo, Qtà, IDCategoria
FROM tbArticoli WHERE IDCategoria = @IDCategoria">
<SelectParameters>
<asp:ControlParameter ControlID="DropDownList1" Name="IDCategoria"
PropertyName="SelectedValue" />
</SelectParameters>
</asp:SqlDataSource>

ho associato il datasource "scrArticoliCategoria" ad un datagridview ed ho attivato il paging e il sorting e fin quà tutto apposto.
ho creato un'altro datasource che mi selezioni tutti gli articoli della tabella "tbArticoli"

<asp:SqlDataSource ID="scrArticoli_All" runat="server" ConnectionString="<%$ ConnectionStrings:dbConnectionString %>"
SelectCommand="SELECT IDArticolo, Descrizione, Immagine, Prezzo, Qtà, IDCategoria
FROM tbArticoli
</asp:SqlDataSource>

quando seleziono il valore "tutto" nella dropdownlist scatta il seguente evento

Protected Sub DropDownList1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles DropDownList1.SelectedIndexChanged
If DropDownList1.SelectedValue = 0 Then
GridView1.DataSourceID = ""
GridView1.DataSource = scrArticoli_All
GridView1.DataBind()
Else
GridView1.DataSourceID = ""
GridView1.DataSource = scrArticoliCategoria
GridView1.DataBind()
End If
End Sub

il problema e che quando associo la proprietà GridView1.DataSource = sqldatasource il pagin e il sorting non funzionano più.

freeteo Profilo | Guru

ciao,
io ti consiglio di usare 1a sola datasource e da codice settare il filtro della sua select nel caso in cui venga selezionata 1a categoria altrimenti non lo metti nemmeno.
Percio' usi 1a sola datasource, quella senza il "where Idcat..." , e nell'evento load della pagina controlli se la combo ha scelto 1valore diverso da 0 allora nella sua select gli aggiungi la parte di filtro...
1po contorto da spiegare cmq alla fine la tua pag sara':

...#combocategoria#...

<asp:SqlDataSource ID="scrArticoliCategoria" runat="server" ConnectionString="<%$ ConnectionStrings:dbConnectionString %>"
SelectCommand="SELECT IDArticolo, Descrizione, Immagine, Prezzo, Qtà, IDCategoria FROM tbArticoli ">
<SelectParameters>
<asp:ControlParameter ControlID="DropDownList1" Name="IDCategoria" PropertyName="SelectedValue" />
</SelectParameters>
</asp:SqlDataSource>

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Page.Load
If DropDownList1.SelectedValue = 0 Then
scrArticoliCategoria.SelectCommand = scrArticoliCategoria.SelectCommand + " WHERE IDCategoria = @IDCategoria"
End If
End Sub


cosi' dovrebbe andare tutto, fai qualche prova in questa direzione...

ps: mi sembra che la stanza sia sbagliata dal codice che scrivi è in .net 2.0
ciao.

Matteo Raumer
MCAD ... .net addicted :-)
http://blogs.dotnethell.it/freeteo
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-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5