与以下主题相关(或者说由于)我能够处理ListView中的滚动事件: How to make scroll event for ListView
在我的情况下,我需要在单页上显示大约6万行,而不使用分页来降低性能影响。
我现在的问题是:滚动事件触发后,动态加载数据的最佳方法是什么?
目前我正在programm-start上加载大约100行,并在每个滚动触发器上添加一行。在后台我使用简单的LIMIT-SQL管理。
说实话,这看起来并不是很好(你实际上可以看到有些内容正在加载,所以它并不顺利)有时它似乎会导致一些访问验证错误。
那么做这些事情的基本想法是什么?我可能需要向正确的方向推进: - )
感谢您的协助。
祝你好运 Teyhouse
答案 0 :(得分:1)
以下是我跟随的article的链接
建议 - 如果你在JS中完全构建listview(即表),然后使用AJAX加载数据,那么不如将asp.net列表视图与JQuery ajax混合在一起。
答案 1 :(得分:0)
解决这个问题很容易。只看一下那部分 (listView1.Height-26)/ 17; - listview.Height - 26 // 26它的一列高,17 - 这是我在列表视图中的行高。当然,您可以使用自己的代码计算此参数。
private const int SB_VERT = 1;
public void ScrollList() {
int items_on_page = (listView1.Height-26)/17;
ScrollEventArgs sarg = new ScrollEventArgs(ScrollEventType.EndScroll, GetScrollPos(this.Handle, SB_VERT));
items_count = listView1.Items.Count;
int scroll_pos = listView1.ScrollPosition;
int left_pos = items_count-scroll_pos;
if(left_pos<=items_on_page+2) {
// load more data into the listview
}
}
protected override void WndProc(ref Message m) {
base.WndProc(ref m);
switch(m.Msg)
{
case WM_VSCROLL:
ScrollList();
break;
case WM_MOUSEWHEEL:
ScrollList();
break;
}
}