J'ai besoin de mélanger le DataSource de GridControl. J'utilise cette propriété dans un UserControl:Shuffle DevExpress GridControl DataSource
private List<Song> _songsDataSource;
public List<Song> SongsDataSource
{
get { return _songsDataSource; }
set
{
_songsDataSource = value;
if (!value.IsNull())
{
SongsBindingList = new BindingList<Song>(value);
songsBinding.DataSource = SongsBindingList;
}
}
}
Puis-je utiliser une méthode que je clone, lecture aléatoire et ajouter à la propriété SongsDataSource:
List<Song> newList = HelpClasses.Shuffle((List<Song>) SongsDataSource.Clone());
SongsDataSource = newList;
public static List<Song> Shuffle(List<Song> source)
{
for (int i = source.Count - 1; i > 0; i--)
{
int n = rng.Next(i + 1);
Song tmp = source[n];
source[n] = source[i - 1];
source[i - 1] = tmp;
}
return source;
}
Chose étrange est qu'il ne semble pas refléter les modifications apportées à GridControl même j'utilise la méthode GridControl.RefreshDataSource() après avoir défini la méthode SongsDataSource. Si je vérifie l'ordre de DataSource, shuffle s'est passé avec succès.
Merci.
Je passe sur la méthode aléatoire() le BindingSource.DataSource et encore rien ne se passe, où est un BindingList. Ajouté les méthodes BeginUpdate(), EndUpdate() et après appelé RefreshDatasource() sans aucune chance encore. –
essayez de définir la liste en tant que DataSource sans utiliser une liste de liens . par exemple. gridControl.DataSource = SongsDataSource. –
devnull
vérifiez également si vous avez trié sur l'une des colonnes, car cela trierait automatiquement les enregistrements dans votre grille et le brassage serait inutile. – devnull