好家伙的GridView自动加载数据我有一个样品的GridView 时滚动条到达底部
这是我希望发生的。
当我打开表单时,我将来自服务器的数据的前100位加载到gridview中。当我向下滚动并到达滚动条的末尾时,我想从101 - 200加载另一个数据。 因此gridview中的数据为1到200. 如何确定滚动条是否到达末端?
好家伙的GridView自动加载数据我有一个样品的GridView 时滚动条到达底部
这是我希望发生的。
当我打开表单时,我将来自服务器的数据的前100位加载到gridview中。当我向下滚动并到达滚动条的末尾时,我想从101 - 200加载另一个数据。 因此gridview中的数据为1到200. 如何确定滚动条是否到达末端?
根据XtraGrid中的版本使用的是 - 也许你应该看看InstantFeedback
这是一个数据源是动态地获得行,当他们进入视野。
这个伟大的事情是 - 它是一个标准的DevExpress组件 - 所以你不必自己创造任何东西。
OR:
你可以强制与一些像这样的东西的行为:
private bool _working = false;
private void view_RowStyle(object sender, RowStyleEventArgs e)
{
if(_working) return;
var view = sender as GridView;
if (view != null)
{
int lastRowIndex = (view.GridControl.DataSource as BindingSource).Count;
if (view.IsRowVisible(lastRowIndex) == RowVisibleState.Visible)
{
_working = true;
//go get more rows.
_working = false;
}
}
}
这是假设你使用的是BindingSource
(如果没有,你必须改变浇注式)。
我处理RowStyle
事件,因为此事件中的代码是“全部时间”执行的。
您可以获取显示的行数并根据加载的总行数进行计算并检查TopRowChanged事件并查看是否需要加载更多行。 这是针对这种情况的一种更为人工的方法。
此外,您可以在服务器模式下使用网格,为您做到这一点。
问候, 秘书科
您CAH处理通过处理Scroll
事件GridControl的嵌入式滚动条的滚动结束(以及任何其他条件)。
以下是方法详细信息:
var sb = GetScrollBar(gridControl1, ScrollBarType.Vertical);
sb.Scroll += new ScrollEventHandler(sb_Scroll);
//...
void sb_Scroll(object sender, ScrollEventArgs e) {
var scrollBar = sender as DevExpress.XtraEditors.ScrollBarBase;
if(e.NewValue == (scrollBar.Maximum - scrollBar.LargeChange)) {
MessageBox.Show("Last row is reached!");
}
}
ScrollBarBase GetScrollBar(GridControl gridControl, ScrollBarType type) {
foreach(Control c in gridControl.Controls) {
var scrollBar = c as ScrollBarBase;
if(scrollBar != null && scrollBar.ScrollBarType == type)
return scrollBar;
}
return null;
}
谢谢@DmitryG。该代码运行完美,但如果我使用mouseWheel它不会触发。 – Snippet 2013-03-18 09:03:50
我正在使用v10.1。我将所有数据加载到数据源中,但我不想加载所有内容。我只想知道如何确定滚动是否到达底部。我想让我的GridView在您向下滚动时加载旧状态的功能。谢谢:) – Snippet 2013-03-18 07:09:29
好吧 - InstantFeedback在第11.x版之前无法使用。我更新了我的答案 – 2013-03-18 07:32:39
感谢您的帮助。我认为它的lastRowIndex-1。问题是它不会触发如果我使用滚动条。 – Snippet 2013-03-18 09:00:56