【问题标题】:Datagridview Windows application API call on ScrollScroll 上的 Datagridview Windows 应用程序 API 调用
【发布时间】:2023-03-05 21:59:01
【问题描述】:

有大量数据要从数据库中检索并显示在 datagridview 上。 我使用 API(Asmx) 方法来获取数据。 我想在用户向下滚动网格时加载数据(调用 api)。 我不想在表单加载时获取所有数据。

我有获取部分数据的 API。当用户向下滚动并将网格绑定为不断滚动时,我如何调用此 api?

这是一个相当大的挑战。任何帮助将不胜感激。谢谢!

【问题讨论】:

    标签: c# datagridview windows-applications


    【解决方案1】:

    你想要的是VirtualModeDataGridView。看看这个MSDN Article,它解释了为什么它对您的批量数据有好处。

    虚拟模式专为处理大量数据而设计。当 VirtualMode 属性为 true 时,您将创建一个具有一定数量的行和列的 DataGridView,然后处理 CellValueNeeded 事件以填充单元格。虚拟模式需要实现底层数据缓存,以根据用户的操作来处理 DataGridView 单元格的填充、编辑和删除。有关实现虚拟模式的详细信息,请参阅如何:在 Windows 窗体 DataGridView 控件中实现虚拟模式。

    还有一个设置教程here

    【讨论】:

    • 谢谢哥们。如果它对我有用,我会尝试将其标记为答案。非常感谢您的回复。
    • 没问题! =) 我不得不接管一个使用这些东西的项目。至少可以说很有趣。
    【解决方案2】:

    C.Barlow - 提供了一个很好的解决方案,效果很好。我还想提出一个替代解决方案。

    在 DataGridView 滚动事件上,我们可以加载数据,因为用户向下滚动并到达网格底部。

    private void Grid_Scroll(object sender, ScrollEventArgs e)
    {
           if (e.Type == ScrollEventType.SmallIncrement || e.Type ==  ScrollEventType.LargeIncrement)
             {
                   if (e.NewValue >= Grid.Rows.Count - GetDisplayedRowsCount())
                   {
                  //Load additional data here and add to your existing grid rows
    //Keep track of last visible row and set it
                    }
              }
    }
    

    //GetDisplayedRowsCount() 将为您提供行数。获取行数的简单函数

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-07
      相关资源
      最近更新 更多