Win form中DataGridView表格滚动加载数据

private int pageIndex = 0;//分页索引号
private int pageSize = 10000;//分页大小
private int scrollRowIndex = 0;//滚动条滚动到第几行
private int count = 0;//数据总条数
List<TestSelectModel> userList = new List<TestSelectModel>();//数据集合


/// <summary>
/// 刷新初始化数据
/// </summary>
private void Init()
{
      pageIndex = 0;
      this.dgv.DataSource = null;
      userList = null;
      scrollRowIndex = 0;
      count = 0;
      loadPage();
}

//加载翻页数据
private void loadPage()
{
//判断当总数据条数是否等于当前已经获取的数据总条数的时候不需要再加载了
  if (count > 0 && count == userList.Count)
    {
                return;
     }        
            int countIndex = pageIndex > 0 ? pageIndex * pageSize : 0;
            F202_PageModel<TestSelectModel> pageModel = tSBLL.GetPage(countIndex, pageSize);
            count = pageModel.TotalCount;
            List<TestSelectModel> newList = pageModel.ReList;
            userList = userList != null && userList.Count > 0 ? userList.Union(newList).ToList() : newList;
            var query = from i in userList
                        orderby i.Id
                        select i;

            DataTable table = query.CopyToDataTable();
            BindingSource source = new BindingSource();
            source.DataSource = table;
            this.dgv.AutoGenerateColumns = false;
            this.dgv.DataSource = source;
            dgv.FirstDisplayedScrollingRowIndex = scrollRowIndex;

}

/// <summary>
        /// 表格滚动事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void dgv_Scroll(object sender, ScrollEventArgs e)
        {
            if (isCache)
                return;
            if (e.ScrollOrientation == ScrollOrientation.VerticalScroll)
            {
                scrollRowIndex = e.NewValue + dgv.DisplayedRowCount(false);
                if (e.NewValue + dgv.DisplayedRowCount(false) > dgv.Rows.Count - 5)
                {
                    //这里面写加载数据的相关操作逻辑
                    ++pageIndex;
                    loadPage();

                    
                }
            }
        }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WinformDataGridView控件是用于显示和编辑数据表格控件。在WinformDataGridView默认情况下会自动显示滚动条,以便用户可以滚动查看所有的行和列的内容。然而,有时候滚动条可能会被其他控件或布局方式所挡住,导致用户无法看到滚动条。 一个常见的情况是,当DataGridView被放置在一个Panel控件,并且设置了DataGridView的Anchor属性以跟随Panel的变化大小时,可能会出现问题。如果DataGridView的宽度过大,超出了Panel的可见区域,那么滚动条就会被挡住,无法显示出来。 为了解决这个问题,你可以尝试以下几种方法: 1. 调整DataGridView的宽度:如果DataGridView的宽度过大,你可以尝试调整它的宽度,使得它能够完全显示在Panel的可见区域内。可以通过修改DataGridView的Width属性来实现。 2. 调整Panel的大小:如果你确定DataGridView的宽度设置正确,但仍然无法看到滚动条,那么可能是Panel的大小不够大,无法容纳DataGridView。你可以尝试调整Panel的大小,使其能够容纳DataGridView显示滚动条。 3. 使用AutoScroll属性:Panel控件有一个名为AutoScroll的属性,当设置为True时,会自动显示滚动条以支持内容的滚动。你可以将Panel的AutoScroll属性设置为True,这样即使DataGridView宽度过大,也能够通过滚动条来查看所有内容。 综上所述,如果在Winform使用DataGridView时出现滚动条无法显示的问题,你可以通过调整DataGridView的宽度、调整Panel的大小或设置Panel的AutoScroll属性来解决。希望对你有帮助。<span class="em">1</span> #### 引用[.reference_title] - *1* [winform datagridview显示滚动条](https://blog.csdn.net/qq_41872328/article/details/119597139)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值