Problema Xceed Datagrid e selezione celle utilizzando tastiera

lunedì 02 maggio 2011 - 11.56
Tag Elenco Tags  VB.NET  |  .NET 4.0  |  Windows 7  |  Visual Studio 2010  |  Access (.mdb)

whiteflash Profilo | Junior Member

Ho il seguente problema utilizzando il Datagrid di Xceed,
se uso il mouse per cambiare la selezione della cella tutto funziona a dovere,
ma se utilizzo la freccia Su/Giù della tastiera il focus non si sposta nella cella da selezionare e di conseguenza non si edita,
perdipiù il contenuto scompare...

Qui ho postato il link al video per farvi capire il problema: http://www.youtube.com/watch?v=wL0grv2j_xY

Questa invece è un screenshot: http://host.presenze.com/showpic-41675/senza_titolo_1.jpg

Queste sono le proprietà che ho impostato nel datagird:
CellEditorDisplayConditions="CellIsCurrent"
EditTriggers="BeginEditCommand, ClickOnCurrentCell, CellIsCurrent, ActivationGesture"
SelectionMode="Single"
SelectionUnit="Cell"
NavigationBehavior="CellOnly"
UpdateSourceTrigger="CellContentChanged"


E questo è il codice xaml per le colonne:
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra


un aiuto?

---------------------------------------------
Newbie esperto VB.NET 2010 e WPF

kataklisma Profilo | Senior Member

Ciao :)

>Ho il seguente problema utilizzando il Datagrid di Xceed,
>se uso il mouse per cambiare la selezione della cella tutto funziona
>a dovere,
>ma se utilizzo la freccia Su/Giù della tastiera il focus non
>si sposta nella cella da selezionare e di conseguenza non si
>edita,
>perdipiù il contenuto scompare...

Premetto che non ho mai utilizzato i controlli Xceed ma prescindendo da questo e leggendo le informazioni da te esposte, posso dedurre che il tutto non sia altro che un Bug del controllo.

L'unica cosa da fare è aprire un ticket di assistenza e aspettare la patch, fermo restando che tu non riesca a trovare qualche workaround (ma il problema persisterebbe comunque).

------------------------------------------
Ignazio Catanzaro

http://blogs.dotnethell.it/swdev/

whiteflash Profilo | Junior Member

ho provato a fare di tutto e mi sembra anche a me un bug.. certo che un errore del genere su una funzione fondamenale..
e perarltro su un controllo che si fa pagare a fior di soldi...

tra l'altro mi sta bloccando tutto il progetto

ho trovato un simil workaround intercettando l'evento keydown e lavorando sui focus e endedit/beginedit,
ma non è il massimo perchè così per muoversi da una riga ad un'altra bisogna premere sempre x 2 volte il tasto su o giù
e se ci sono tante righe diventa impensabile

PS. Ho scritto e postato il video anche nel forum di supporto anche se non me la cavo molto bene a spiegare in inglese... ma non ho ricevuto risposta


AGGIORNAMENTO:
Dopo due giorni.... ho trovato il problema... il problema sta in questo codice:

Private Sub CVS_Dati_EditCommitted(sender As Object, e As Xceed.Wpf.DataGrid.DataGridItemEventArgs) Handles CVS_Dati.EditCommitted

Dim objCommandBuilder As New OleDbCommandBuilder(DA_Dati)
DA_Dati.Update(DSDatiTabelle, "TAliquotaIVA")
DSDatiTabelle.Tables("TAliquotaIVA").AcceptChanges()

End Sub


modificandolo così il problema non si presenta più:

Private Sub CVS_Dati_EditCommitted(sender As Object, e As Xceed.Wpf.DataGrid.DataGridItemEventArgs) Handles CVS_Dati.EditCommitted
If RigaModificata Then
Dispatcher.BeginInvoke(Windows.Threading.DispatcherPriority.Render, Sub()
Dim objCommandBuilder As New OleDbCommandBuilder(DA_Dati)
DA_Dati.Update(DSDatiTabelle, "TAliquotaIVA")
DSDatiTabelle.Tables("TAliquotaIVA").AcceptChanges()
End Sub)
End If

End Sub

Evidentemente resettando le modifiche al dataset con AcceptChanges, poco prima del committed crea problemi
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-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5