2013-03-18 107 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