我需要洗牌GridControl的數據源。我使用這個屬性在用戶控件:洗牌DevExpress GridControl數據源
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;
}
奇怪的是,它似乎並沒有反映即使我在設置SongsDataSource方法後使用GridControl.RefreshDataSource()方法對GridControl所做的更改。如果我檢查DataSource命令,洗牌成功。
謝謝。
我傳遞的隨機()方法BindingSource.DataSource,仍然沒有任何反應,其中一個的BindingList。在添加了BeginUpdate(),EndUpdate()方法之後,仍然沒有運氣調用RefreshDatasource()。 –
2010-09-07 08:42:35
嘗試將List設置爲DataSource,而不使用BindingList 。例如。 gridControl.DataSource = SongsDataSource。 –
devnull
2010-09-07 08:50:44
還會檢查您是否對任何列進行排序,因爲這會自動對網格中的記錄進行排序,並且洗牌將毫無用處。 – devnull 2010-09-07 09:04:46