cambia l'ordine o l'indice delle colonne datagrid
-
20-08-2019 - |
Domanda
Questo è qualcosa che non posso credere di non essere stato in grado di capire - per favore dimmi che mi manca qualcosa di semplice ...
Ho un datagrid, lo sto riempiendo di LINQ e di una classe personalizzata per aggiungere dati ad esso.
Successivamente, ho bisogno dei dati in un ordine specifico - sembra ignorarmi.
Come posso modificare le proprietà di una colonna, come indice ecc. ??
ecco il codice LINQ che sto usando:
grazie in anticipo ...
Dim query = From m In db.details _
Where m.InboundDate >= CType(MonthCalendar1.SelectionStart, DateTime) _
And m.InboundDate <= CType(MonthCalendar1.SelectionEnd, DateTime).AddHours(23).AddMinutes(59) _
And m.ClientNo = 1 _
Join md In db.Manifests On md.ManifestID Equals m.MainID _
Select New GridData With {.manifestID = m.MainID, .InboundDate = m.InboundDate, .Zip = m.Zip, .LadingPkgQty = md.LadingPkgQty, .Weight = m.Weight, .Zone = m.Zone, .Fuel = 23, .LineHaul = Nothing, .Freight = Nothing, .BilledAmount = Nothing, .PackageRate = Nothing, .LTL = Nothing}
Soluzione
Risolto
Non riesco a credere a quante cose ho dovuto guadare solo per trovarlo!
Sembra Sooooo ovvio ora (come gran parte di .net dopo il fatto!)
Datagrid.Columns("Zone").DisplayIndex = 0
o
Datagrid.columns(1).DisplayIndex=0
Altri suggerimenti
Quello che vedi è un effetto del modo in cui VB ha generato tipi anonimi in Visual Studio 2008 RTM. Il compilatore ordina le proprietà in ordine alfabetico. Quindi, indipendentemente dall'ordine specificato, se i dati associano una query, le colonne verranno visualizzate in ordine alfabetico.
In Visual Studio 2008 SP1, il compilatore VB ha apportato una modifica per affrontare questo comportamento. I tipi anonimi ora genereranno membri di tipo anonimo nello stesso modo in cui li specifichi nel codice. Se esegui l'aggiornamento a VS2008 SP1, dovresti vedere un cambiamento in questo comportamento.
Articolo dettagliato sull'argomento
Non sono sicuro dello specifico di ciò che sta succedendo, ma qualcosa da considerare ...
A che punto stai modificando le colonne? Se è troppo tardi, potrebbe essere necessario rimbalzare sulla griglia, facendola ridisegnare. Di solito quando cambio qualcosa e non vedo il suo effetto sullo schermo, è dovuto a un ordine vincolante.