Мне нужно перетасовать DataSource GridControl. Я использую это свойство в 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;
}
}
}
Затем я использую метод, который я клонировать, перетасовать и добавляемый к свойству 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;
}
Странно то, что это, кажется, не отражает изменения в GridControl даже я использую метод GridControl.RefreshDataSource() после установки метода SongsDataSource. Если я проверю порядок DataSource, перетасование произошло успешно.
спасибо.
Я передаю по методу Shuffle() в BindingSource.DataSource и до сих пор ничего не происходит, где является BindingList. Добавлены методы BeginUpdate(), EndUpdate() и после вызова RefreshDatasource() без везения. –
попробуйте установить Список в качестве источника данных без использования BindingList . например. gridControl.DataSource = SongsDataSource. –
devnull
также проверьте, есть ли у вас сортировка по любому из столбцов, потому что это автоматически сортирует записи в вашей сетке, и перетасовка будет бесполезной. – devnull