OVH Cloud OVH Cloud

dtv.RowFilter() sur 2 DataView ?

2 réponses
Avatar
Olivier
Bonjour

Ha la la ! quelles surprises avec .Net :-/

voici le problème :

J'utilise un DataView et je fais des RowFilter dessus()
Bon tout est OK.

Maintenant, je fais :
Dim DV As New DataView
Dim DV2 As New DataView

DV1 = dataSet1.Tables(0).DefaultView
DV2 = DV1

Maintenant, si je fais un RowFilter() sur mon DV2 et bien il s'exécute
également sur le DV1 ??
C'est bizare, non ?
Il existe un lien entre les deux ?

Comment peut-on faire pour copier un dv sur un autre et manipuler le DV2
sans toucher au DV1 ?

Merci
Olivier

2 réponses

Avatar
Olivier
Bon, j'ai changé
DV2 = DV1

en

DV2 = New DataView(DataSet1.Tables(0))

et ca a l'air de marcher.

Olivier




"Olivier" <aa.aa.aa> a écrit dans le message de
news:OwFyxtU$
Bonjour

Ha la la ! quelles surprises avec .Net :-/

voici le problème :

J'utilise un DataView et je fais des RowFilter dessus()
Bon tout est OK.

Maintenant, je fais :
Dim DV As New DataView
Dim DV2 As New DataView

DV1 = dataSet1.Tables(0).DefaultView
DV2 = DV1

Maintenant, si je fais un RowFilter() sur mon DV2 et bien il s'exécute
également sur le DV1 ??
C'est bizare, non ?
Il existe un lien entre les deux ?

Comment peut-on faire pour copier un dv sur un autre et manipuler le DV2
sans toucher au DV1 ?

Merci
Olivier




Avatar
digging
Olivier a utilisé son clavier pour écrire :
Bon, j'ai changé
DV2 = DV1

en

DV2 = New DataView(DataSet1.Tables(0))

et ca a l'air de marcher.

Olivier




"Olivier" <aa.aa.aa> a écrit dans le message de
news:OwFyxtU$
Bonjour

Ha la la ! quelles surprises avec .Net :-/

voici le problème :

J'utilise un DataView et je fais des RowFilter dessus()
Bon tout est OK.

Maintenant, je fais :
Dim DV As New DataView
Dim DV2 As New DataView

DV1 = dataSet1.Tables(0).DefaultView
DV2 = DV1

Maintenant, si je fais un RowFilter() sur mon DV2 et bien il s'exécute
également sur le DV1 ??
C'est bizare, non ?
Il existe un lien entre les deux ?

Comment peut-on faire pour copier un dv sur un autre et manipuler le DV2
sans toucher au DV1 ?

Merci
Olivier





Oui ça marche, mais ce qu'il fallait comprendre, c'est que en .NET,
TOUT est objet ! Quand tu fais DV2=DV1, en réalité tu créés une
nouvelle référence pointant exactement sur le même dataView. Il est
donc logique qu'en manipulant DV2 tu aies exactement les mêmes
comportements.
C'est un point essentiel sur lequel que malheureusement les experts
n'insistent pas assez en croyant que tout le monde vient de java ou de
C++ ! Alors qu'un débutant peut tout à fait commencer par du C# - je
viens de Windev.
Mieux, quand tu as compris cette notion de référence, tu as
implicitement répondu à la question récurante du passage de paramètres
entre deux forms, à laquelle aucune réponse claire n'a été donnée, et
pourtant, tout réside dans cette notion d'objet ; tu créés des objets,
tu manipules de objets, tu transfères des objets à une forms (et non
une string isolée !), tu ... avec des objets, bref, tu respires des
objets.
Messieurs, il faut insister dessus, nous les débutants en avons besoin
!
digging

--
- concepteur ensemblier -