my.ASPItalia.com
ASP.NET
|
HTML5
|
LINQ e Entity Framework
|
Silverlight
|
Windows Phone
|
.NET Framework
|
Windows 8
|
Libro WP7
|
Libro HTML5
|
Corso HTML5
Iscriviti
Login
Newsletter
Home
Articoli
Script
Notizie
FORUM
Blogs
Media
Tutorials
Corsi
Libri
Eventi
Tags
Tutti i forum
Ricerca
FAQ
Fai una domanda
Anomalia utilizzando ListView e DataView
in
.NET Framework
>
ASP.NET 3.5
Ultimo messaggio
andrestu
il 29 dicembre 2009 alle 21:58
22 messaggi
dal 03 ottobre 2009
ho un dataview (ricavato da un DataTable) che collego ad un controllo Listview tramite la proprietà DataSource.
ho dei problemi quando faccio delle modifiche direttamente al dataview tramite il Listview, nel senso che se seleziono un riga e poi eseguo un metodo che modifica i dati di questa riga e della riga successiva alle volte effettua le modifiche alle volte no, non capisco il problema si presenta a random...
per vedere direttamente l'esempio andate su www.andrearestucci.name, troverete un tabella le cui righe sono selezionabili, dopo averne selezionata una cliccate sul pulsante "aumenta posizione".
vedrete che la riga scende di una posizione.
Praticamente quando cliccate il pulsante "aumenta posizione" il contenuto della cella (colonna precedenza) viene copiato alla riga di sotto e viceversa, praticamente vengono invertiti i valori della riga selezionata e quella di sotto (solo i valori della colonna precedenza). Visto che il DataView è impostato con ordinamento sulla colonna "precedenza", dopo aver fatto lo scambio la riga selezionata scende di una posizione.
Fin qui tutto bene se non per il fatto che ogni tanto l'operazione al click del pulsante "aumenta posizione" non viene eseguita, sinceramente non capisco in base a che cosa.
Se la stessa cosa viene fatta utilizzando un DataTable invece che un DataView funziona regolarmente, quindi il problema sembrerebbe essere legato al DataView... Ho provato ad usare anche controlli Databound divrsi tra cui GridView e Repeater ma succede la stessa cosa.
Preciso che il dataview in questione viene caricato e modificato dall'oggetto session
Modificato da andrestu
il 29 dicembre 2009 21.58 -
Andrea Restucci - Web Programmer
www.andrearestucci.name
Download and try my FREE custom controls !!!
Rispondi
Quoting
nostromo
il 30 dicembre 2009 alle 09:29
14.775 messaggi
dal 18 febbraio 2004
Contributi
www.soluzioni4d.it
|
Blog
senza codice è difficile dire a priori dove stai commentendo un errore, il DataView è una vista è ha dei comportamenti diversi dal DataTable.
posta del codice che ritieni rappresentativo e lavoriamo su quello
ciao marco
Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio
http://nostromo.spaces.live.com/default.aspx
Rispondi
Quoting
andrestu
il 30 dicembre 2009 alle 10:00
22 messaggi
dal 03 ottobre 2009
ok questo è il contenuto del metodo legato al pulsante che cambia i valori e cioè il pulsante "aumenta posizione" (vedi spiegazione precedente)
protected void BtnAumenta_Click(object sender, EventArgs e)
{
DataView MyDW = (DataView)Session["DataView_CtrlList"];
int selInd = ListView1.SelectedIndex;
int selIndSucces;
if (selInd == (MyDW.Count - 1))
{
selIndSucces = selInd;
}
else
{
selIndSucces = selInd + 1;
}
Int16 precSel = (Int16)MyDW[selInd].Row["precedenza"];
Int16 precSuc = (Int16)MyDW[selIndSucces].Row["precedenza"];
MyDW[selInd].Row["precedenza"] = precSuc;
MyDW[selIndSucces].Row["precedenza"] = precSel;
ListView1.SelectedIndex = selIndSucces;
ListView1.DataBind();
}
spiegazione:
-imposto MyDW sul dataview memorizzato nella sessione (lo stesso che nel page load attribuisco come datasource del listview)
-recupero l'index del listview selezionato (cioè la riga selezionata)
-imposto anche un campo sull'indice della riga successiva (l'iterazione if else serve in caso se l'indice della riga selezionata corrispondesse all'ultima riga quello successivo viene impostato sempre sull'ultima riga, per non sforare)
-creo due campi dove memorizzo i valori delle due righe in questione
-inverto i valori delle due righe corrispondenti alla colonna precedenza
-assegno al list view l'index successivo questo perchè invertendo i valori della colonna precedenza l'elemento selezionato dopo la modifica scende di un posto (dato che il dataview è ordinato sulla colonna precedenza)
-faccio nuovamente il bind del listview
Il fatto è che l'anomalia accade a random, come se fosse inerente all'utilizzo di qualche cache penso... altrimenti non so cosa pensare
Preciso che le stesse operazioni fatte utilizzando un Datatable (all'interno di un dataset) non danno questo tipo di problema, però sono costretto ad usare un dataview per poter ordinare la tabella sulla colonna precedenza
Andrea Restucci - Web Programmer
www.andrearestucci.name
Download and try my FREE custom controls !!!
Rispondi
Quoting
nostromo
il 30 dicembre 2009 alle 10:28
14.775 messaggi
dal 18 febbraio 2004
Contributi
www.soluzioni4d.it
|
Blog
il fatto che usando il DataTable non si presenta l'errore esclude prima la chache lato browser o lato server.
hai provato ad inserire un punto di interruzione su BtnAumenta_Click?
Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio
http://nostromo.spaces.live.com/default.aspx
Rispondi
Quoting
andrestu
il 30 dicembre 2009 alle 12:19
22 messaggi
dal 03 ottobre 2009
guarda ho provato a fare il debug e mettere un punto di interruzione ma non noto differenze di esecuzione tra quando funziona e quando non funziona.
I campi vengono valorizzati in ogni caso, le uniche righe su cui non riesco a vedere gli effetti tramite il debug sono:
MyDW[selInd].Row["precedenza"] = precSuc.ToString();
MyDW[selIndSucces].Row["precedenza"] = precSel.ToString();
forse le più importanti, ma dato che avvengono dentro l'oggetto MyDW non riesco a vedere l'effettiva operazione...
Ci sono altri modi o altre classi che posso usare al posto di un dataview (ricavato da un datatable) dove posso ordinare gli elementi in base ad una colonna? e magari anche collegare ad un controllo databound?
Andrea Restucci - Web Programmer
www.andrearestucci.name
Download and try my FREE custom controls !!!
Rispondi
Quoting
Salto rapido
Ultimi messaggi
Tutti i forum
Ricerca
Utenti online
ASP.NET
ASP.NET 2.0
ASP.NET 3.5
ASP.NET 4.0
.NET Framework
Silverlight
Windows Phone
Windows Presentation Foundation e WinForms
Windows Communication e Workflow
ASP - avanzato
ASP - base
SQL Server e MySQL
E-commerce
Hosting
Altri linguaggi e tecnologie
Windows Server, IIS & Security
Libri
OT
Commenti: blogs e notizie
Eventi
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.
Community
Effettua il login!
Hai dimenticato la password?
Ultimi messaggi
Trovare un controllo all'interno di un gridview
sessioni scadute
variabile session
(3)
registrazione utenti
(5)
problema con il controllo create user wizard
(3)
Aggiornare contenuto compreso nei tag <asp:panel> e </asp:panel> di una pagina web, richiamandola da area riservata.
(5)
inserimento dati da form
UTENTI ONLINE
In primo piano
Annunciate le versioni ufficiali di Visual Studio 11
Rilasciato Visual Studio 11 Beta: scopri tutte le novità!
Windows 8 Consumer Preview: segui con noi la diretta
I più letti di oggi
Sviluppare applicazioni web mobile con HTML5 e jQuery mobile
Le novità di ASP.NET 4.5 (Community Days 2012)
Introduzione ad Entity Framework
Web Camp - ASP.NET MVC 3 (Community Days 2012)
Metro Style App per Windows 8 con HTML e Javascript
Migliorare le prestazioni di Entity Framework limitando l'uso del metodo Include
Windows Phone 7.5 Developer Day: costruire un'app in 60 minuti
Windows 8: introduzione allo sviluppo
Migliorare le prestazioni di Entity Framework limitando l'uso del metodo Include
Applicazioni Metro con XAML: cosa cambia per lo sviluppatore .NET con Windows 8
Media
Sviluppare applicazioni web mobile con HTML5 e jQuery mobile
Metro Style App per Windows 8 con HTML e Javascript
Tutti i media
In evidenza
Dal 29 febbraio arriva WinRTItalia.com: tutto sullo sviluppo per Windows 8 e Metro
Migliorare le prestazioni di Entity Framework limitando l'uso del metodo Include
Aprire una popup in Silverlight
Sviluppare applicazioni web mobile con HTML5 e jQuery mobile
Disegnare un'applicazione a servizi con Entity Framework e WCF
Il nuovo tag time in HTML5
Salvare e leggere rapidamente le impostazioni di un'applicazione Windows Phone
Metro Style App per Windows 8 con HTML e Javascript
MISC
I nostri autori
Collabora con noi!
Media Kit - Pubblicità sul nostro network