【问题标题】:Infragistics UltraGrid - how to add rows when scroll reaches bottom?Infragistics UltraGrid - 滚动到底部时如何添加行?
【发布时间】:2014-02-13 15:54:44
【问题描述】:

我有一个包含 100,000 条记录的表,并且我有一个检索 10 条记录的方法(使用实体框架),我告诉它跳过多少条记录以获取接下来的 10 条记录。

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

我加载列表中的前 10 条记录,并将其设置为 UltraGrid 的数据源,我如何调用该方法来获取接下来的 10 条记录并在滚动到达底部或接近时将其添加到 UltraGrid到达底部?

【问题讨论】:

  • 目前太忙,无法撰写答案,但 Infragistics 论坛上的这些 two posts 可能会有所帮助。

标签: c# winforms load infragistics ultrawingrid


【解决方案1】:

我有一个满足您要求的解决方案。希望这对你有帮助..

首先,创建一个名为“test”(比如说)的 Windows 窗体。 在表单中添加一个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 行......因为它是最后一行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-26
    • 1970-01-01
    • 1970-01-01
    • 2018-03-17
    • 2022-12-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多