C#的DatagridView控件在数据量过大时加载过慢,该如何解决

C#的DatagridView控件在数据量过大时加载过慢
小弟目前在做一个数据检索界面,界面首次加载时数据量挺大,越2w条记录,看了有网友说要开启VirtualMode,我就尝试了一下,把从数据库查到的数据放到DataTable中,然后写了CellValueNeeded事件,现在加载约10s可以搞定,但是问题来了:使用VirtualMode初始化时,dgvQueryResult.RowCount = dt.Rows.Count; 但查询条件变了后,dt变了,CellValueNeeded事件就不好使了。CellValueNeeded事件是这样写的,请各位大神帮我指点一下,这个事件要怎么写才能满足不同的查询要求。或者说我哪些地方还没考虑到,请大家指点一下,谢谢!
private void dgvQueryResult_CellValueNeeded(object sender, DataGridViewCellValueEventArgs e)
        {
            if (e.RowIndex == dt.Rows .Count )
                return;
            e.Value = dt.Rows[e.RowIndex][e.ColumnIndex].ToString();
        }

------解决思路----------------------
使用分页控件让用户看完一百条以后点击下一页按钮,你表格每次只显示一百条
------解决思路----------------------
C#的DatagridView控件在数据量过大时加载过慢,该如何解决

那就分页咯。
------解决思路----------------------
http://msdn.microsoft.com/zh-cn/library/system.componentmodel.backgroundworker(v=vs.110).aspx
------解决思路----------------------
必须加日期树啊,左树右表的形式!让用户点日期才给加载那一天的数据,3000条就不会慢了,然后加关键字定位或关键字筛选就ok,具体用定位还是筛选看情况。