132 messaggi dal 14 febbraio 2007
Ciao,

Sto creando una semplice web application e mi accorgo che il mio controllo ListView, all'interno della mia webform, effettua una chiamata al DB con tanto di DataBind() anche solo per poter aggiornare lo stato del ListView e far prendere il SelectedTemplateStyle al valore selezionato.

Mi chiedevo:
1 - esiste un modo per applciare lo stile della riga selezionata alla riga del ListView cliccata senza dover effettuare il DAtaBind ?
2 - sapreste consigliarmi un modo più elegante per far si che non si debba contattare il DB anche per queste piccole cose?

GRazie a tutti
103 messaggi dal 04 ottobre 2010
1- Di modi ne vedo due: o vai di javascript... ma mi sento di sconsigliarlo perchè se nel selectitemtemplate hai dei pulsanti che vanno ad applicare il postback, dovresti ricreare i meccanismi di asp.net per retribuire cose tipo nuovi dati in code behind ecc ecc...
Oppure, dovresti giocartela con il selecting del DataSource che usi, dato che è annullabile, e annullandolo non passi per il DB. Però il problema è che ti devi salvare i dati da qualche parte per poterli mettere a mano come source del listview nel caso annulli l'evento selecting del datasource, per questo ti consiglio di usare un objectdatasource.

2- Non usare il listview ma controlli client e javascript con il supporto di framework fatti apposta (ExtJS per esempio), evitando quindi l'ausilio dei controlli .net

Non mi viene altro in mente... magari c'è qualche metodo più semplice... te lo auguro! :)
Modificato da Biohazard il 10 settembre 2012 11.55 -
132 messaggi dal 14 febbraio 2007
Grazie per la pronta risposta :)

Analizzerò con più cura ciò che mi hai scritto e vedo quale potrebbe essere la scelta migliore per il mio piccolo progetto
3.939 messaggi dal 28 gennaio 2003
Io utilizzo il ListView abbastanza spesso e dico come opero.
Ho due possibilità:
1) imposto la proprietà EnableViewState a true
2) nell'evento load della pagina metto
If Not Me.IsPostBack Then
  BindData()
End If

(BindData si occupa dell'accesso alla banca dati)

In questo modo ho un solo accesso alla banca dati, ma ho un viewstate grande che il server ed il client si palleggiano ad ogni postback.

L'altra possibilità che io preferisco, è quella di mettere a false la proprietà EnableViewState, in modo da minimizzare il viewstate, ed eseguire il BindData() ad ogni postback.

ps. In genere, la selezione di una riga non si fa per esempio, solo per cambiare il colore di una riga, ma si fa per chiedere informazioni di dettaglio della riga selezionata, che implica sempre una richiesta alla banca dati.
Certo, si potrebbe, usando sempre il ListView, utilizzare l'evento click client, cambiare il colore della riga con javascript, e fare una richiesta al server tramite ajax.

Per concludere, io faccio esattamente come te e mi ci trovo benissimo.
Ciao

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.