2017-07-13 2 views
0

現在のプロジェクトでは、カスタム無限スクロールを実装する必要があります。つまり、ユーザーがページをスクロールして最後の行が少なくとも部分的に見えるようになると、データベースからのデータのグリッドが一番下までスクロールされているかどうかを確認する

問題は、最後の行が表示されているかどうかを検出することです。これまでのところ、私は次のソリューションを考え出した:

gridView.TopRowChanged += GridView_TopRowChanged; 

    private void GridView_TopRowChanged(object sender, EventArgs e) 
    { 
     var rowVisibleState = gridView.IsRowVisible(gridView.DataRowCount - 1); 
     if (rowVisibleState == RowVisibleState.Visible 
      || rowVisibleState == RowVisibleState.Partially) 
     { 
      LoadData(); 
     } 
    } 

これは、どの列でもデータをグループ化するまでうまくいく。

enter image description here

あなたが絵に見ることができるように、スクロールが最後の行に達したが、技術的には最後の行は、まだグループヘッダーの後ろに隠れています。

データがグループ化されているかどうかに関係なく、スクロールが底に達したかどうかを判断する方法はありますか?

答えて

2

あなたはあなたのコードがよりstratightforwardかつ堅牢にするために、直接垂直スクロールバーを操作することができます。

protected override void OnLoad(EventArgs e) { 
     base.OnLoad(e); 
     var scrollBar = gridControl1.Controls.OfType<VCrkScrollBar>().FirstOrDefault(); 
     scrollBar.Scroll += ScrollBar_Scroll; 

    } 

    private void ScrollBar_Scroll(object sender, ScrollEventArgs e) { 

     if (e.NewValue == ((IScrollBar)sender).ViewInfo.VisibleMaximum) { 
      LoadMoreData(); 
     } 
    } 

また、あなたは、以前のスクロールバーの状態とスクロール方向を確認するためにe.OldValueパラメータを確認することができます。

関連する問題