好傢伙的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