簡體   English   中英

Infragistics UltraGrid - 當滾動到達底部時如何添加行?

[英]Infragistics UltraGrid - how to add rows when scroll reaches bottom?

我有一個包含100,000條記錄的表,我有一個方法(使用實體框架)檢索10條記錄,我給它多少條記錄跳過以獲得接下來的10條記錄。

List<Item> GetRecords(int skip = 0);

我在列表中加載前10條記錄,並將其設置為UltraGrid的數據源,如何在滾動到達底部或接近底部時調用該方法獲取接下來的10條記錄並將其添加到UltraGrid中?

我有一個滿足您要求的解決方案。 希望這可以幫助你..

首先,創建一個名為“test”的窗體(比如說)..在窗體中添加一個ultraGrid ..

在此輸入圖像描述

檢查以下代碼:

   public partial class test : Form
   {
    DataTable dtSource = new DataTable();
    int takecount = 50;
    int skipcount = 0;
    DataTable dtResult;

    // CONSTRUCTOR
    public test()
    {
        InitializeComponent();

        // Fill Dummy data here as datasource...

        dtSource.Columns.Add("SNo", typeof(int));
        dtSource.Columns.Add("Name", typeof(string));
        dtSource.Columns.Add("Address", typeof(string));
        int i = 1;
        while (i <= 500)
        {               
            dtSource.Rows.Add(new object[] { i, "Name: " + i, "Address " + i });
            i++;
        }
        dtResult = dtSource.Copy();
        dtResult.Clear();
    }

    // ON FORM LOAD FUNCTION CALL
    private void test_Load(object sender, EventArgs e)
    {            
        ultraGrid1.DataSource = dt_takeCount();
        ultraGrid1.DataBind();


    }

    private DataTable dt_takeCount()
    {            
        if (dtSource.Rows.Count - skipcount <= takecount)
        {
            takecount = dtSource.Rows.Count - skipcount;
        }
        foreach (var item in dtSource.AsEnumerable().Skip(skipcount).Take(takecount))
        {
            dtResult.Rows.Add(new object[] { item.Field<int>("SNo"), item.Field<string>("Name"), item.Field<string>("Address") });
        }
        if (dtSource.Rows.Count - skipcount >= takecount)
        {
            skipcount += takecount;               
        }            
        return dtResult;
    }

    // EVENT FIRED WHEN ON AFTERROWREGIONSCROLL
    private void ultraGrid1_AfterRowRegionScroll(object sender, Infragistics.Win.UltraWinGrid.RowScrollRegionEventArgs e)
    {
        int _pos = e.RowScrollRegion.ScrollPosition;
        if (ultraGrid1.Rows.Count - _pos < takecount)
        {
            dt_takeCount();
        }           
    }        
}

以上代碼是有效的.. - >“ultraGrid1_AfterRowRegionScroll”函數是“AfterRowRegionScroll”事件函數

- >但是請確保當你選擇“takecount”時,它會生成滾動條, - >當你運行上面的代碼時...當你滾動時,行會更新50,直到第500行...因為它是最后一排。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM