2013-03-18 178 views
0

好家伙的GridView自动加载数据我有一个样品的GridView enter image description here时滚动条到达底部

这是我希望发生的。

当我打开表单时,我将来自服务器的数据的前100位加载到gridview中。当我向下滚动并到达滚动条的末尾时,我想从101 - 200加载另一个数据。 因此gridview中的数据为1到200. 如何确定滚动条是否到达末端?

回答

2

根据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事件,因为此事件中的代码是“全部时间”执行的。

+0

我正在使用v10.1。我将所有数据加载到数据源中,但我不想加载所有内容。我只想知道如何确定滚动是否到达底部。我想让我的GridView在您向下滚动时加载旧状态的功能。谢谢:) – Snippet 2013-03-18 07:09:29

+0

好吧 - InstantFeedback在第11.x版之前无法使用。我更新了我的答案 – 2013-03-18 07:32:39

+0

感谢您的帮助。我认为它的lastRowIndex-1。问题是它不会触发如果我使用滚动条。 – Snippet 2013-03-18 09:00:56

1

您可以获取显示的行数并根据加载的总行数进行计算并检查TopRowChanged事件并查看是否需要加载更多行。 这是针对这种情况的一种更为人工的方法。

此外,您可以在服务器模式下使用网格,为您做到这一点。

问候, 秘书科

1

您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; 
} 
+0

谢谢@DmitryG。该代码运行完美,但如果我使用mouseWheel它不会触发。 – Snippet 2013-03-18 09:03:50