[.NET] CurrencyManager, UltraGrid en BindingSources, 1e Rij

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Davio
  • Registratie: November 2007
  • Laatst online: 06-01 16:46
Dag Tweakers,

Ik heb een probleem met wat databindings.

In het kort is het als volgt: Ik heb een bindingSource die ik tijdens runtime toewijs aan een bepaalde selectie data. Als dat gebeurd is dan koppel ik deze data aan een datagrid (UltraGrid van Infragistics) waarna de gegevens automatisch worden geladen.

So far, so good, dit werkt allemaal prima. Ik heb een event aan mijn bindingSource gehangen (CurrentChanged) die af moet gaan als een gebruiker een rij aanklikt (deze rij wordt dan actief).

Na het inladen van de gegevens (koppelen van de bindingSource aan de dataSource-property van mijn grid), wordt automatisch de eerste rij van de grid geselecteerd en de Position property van de bindingSource komt dan op 0. Echter wordt er dan geen CurrentChanged-event afgevuurd.

Deze design-keuze, daar kan ik enigszins inkomen.

Maar het probleem is dan: Als een gebruiker de eerste rij aanklikt, wordt er ook geen CurrentChanged-event afgevuurd.

Ik zou wel willen dat dit gebeurt en heb al geprobeerd om de Position van mijn bindingSource op -1 te zetten. Echter staat hij door de CurrencyManager dit niet toe en zet hij hem automatisch op 0.

Als een gebruiker eerst een andere rij aanklikt en dan weer de eerste rij, dan werkt het wel zoals het moet.

Ik snap dat het probleem niet aan de dataGrid ligt, want die reageert slechts op de CurrencyManager / BindingSource en ik wil SyncWithCurrencyManager ook niet echt op FALSE zetten.


Ik vraag mij dus af of er een Property van de CurrencyManager of BindingSource is waardoor hij niet automatisch na de binding het eerste element selecteert of de Position op 0 zet.

Ik heb al GeGoogled, maar dit leverde mij niks op...

Acties:
  • 0 Henk 'm!

  • MTWZZ
  • Registratie: Mei 2000
  • Laatst online: 13-08-2021

MTWZZ

One life, live it!

Wat wil je precies bereiken? Gaat het om het uitvoeren van een actie op het moment dat een rij wordt aangeklikt?
Als het gaat om een actie bij het wijzigen van de huidige rij dan is het gedrag wat je nu hebt exact zoals het zou moeten, de huidige rij wijzigt immers niet.

[ Voor 7% gewijzigd door MTWZZ op 21-11-2011 19:12 ]

Nu met Land Rover Series 3 en Defender 90


Acties:
  • 0 Henk 'm!

  • Davio
  • Registratie: November 2007
  • Laatst online: 06-01 16:46
Wat ik wil bereiken is dat de CurrencyManager na het binden niet automatisch het eerste resultaat selecteert, maar de positie zeg maar op -1 laat staan.

Ik heb namelijk 1 parent grid met daaronder een child wat ook weer een parent is voor een grid die daaronder staat. Op het moment dat een gebruiker in grid 1 de eerste (of een andere) rij aanklikt, moet grid 2 geladen worden. En dan als een gebruiker daar iets aanklikt, moet grid 3 geladen worden.

Ik doe dit met een CurrentChanged event wat dus niet triggert bij de eerste rij, omdat die gelijk al geselecteerd wordt. Als een gebruiker eerst een andere rij kiest en daarna weer de eerste rij, werkt het wel.

Een alternatief zou zijn om automatisch gewoon alle grids in te laden op basis van de eerste rij, maar dat wil ik liever niet, want voor mijn programma geeft dat gekke en ongewenste resultaten.

[ Voor 6% gewijzigd door Davio op 22-11-2011 09:48 ]


Acties:
  • 0 Henk 'm!

  • jip_86
  • Registratie: Juli 2004
  • Laatst online: 26-09 20:37
Is het geen timing probleem? Dat je data er al is, maar je event dat er op moet reageren nog niet?

Acties:
  • 0 Henk 'm!

  • Davio
  • Registratie: November 2007
  • Laatst online: 06-01 16:46
Dat denk ik niet, het is meer een ongewenste feature waarvan ik me afvraag of ik het kan omzeilen.

Ik kan bijvoorbeeld het BindingComplete event gebruiken en dan als de data wordt getoond in de Grid de andere grids inladen, maar dat wil ik dus niet.

Acties:
  • 0 Henk 'm!

  • MTWZZ
  • Registratie: Mei 2000
  • Laatst online: 13-08-2021

MTWZZ

One life, live it!

Wat je eventueel zou kunnen doen is in de BindingComplete een ClearSelection() aanroepen op de betreffende DataGridView.
Als er vervolgens op de 1e rij geklikt wordt zal CurrentChanged wel afgaan.

Nu met Land Rover Series 3 en Defender 90

Pagina: 1