本实例分离出来
环境为:vs2010,sqlserver2008,采用了三层构架,使用了listview和aspnetpager v7.32分页控件,数据量为50W
全实例没有采用ObjectDataSource等任何DataSource数据源,完全手动绑定,手动分页
使用aspnetpager分页控件和存储过程实现了50W数据快速分页。
所有listview具有功能,如添加,删除,编辑更新等,全都完整编写。
压缩包中写明了使用方法,请按方法安装使用。
本人是个新手,如果有什么问题,望高手指教。
最终效果如图:
文件下载:
将上图另存为,然后将扩展名改为.rar,双击打开就可以了。如有报毒,那是误报,因为这是一个图片和压缩包二合一的文件。
在测试中发现一个问题。
当listview中添加数据和删除数据的时候,会出现数据显示不全,分页数不对等分页不正常的现像。
研究发现问题出在listview在添加和删除数据后,未及时更新aspnetpager的记录集总数所造成的,故做以下修改,修改原理是,在进行添加、删除操作后,马上重新复值总数。
Unit_manage.aspx.cs修改,直接将以下复盖掉原文件里的相应位置:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack) //判断是否是第一次访问,给于LISTVIEW绑定
{
AspNetPagerCount(); //获取记录集总数
Bind();
}
}
protected void LV1_ItemDeleting(object sender, ListViewDeleteEventArgs e)
{
int id = int.Parse(LV1.DataKeys[e.ItemIndex].Value.ToString()); //获取listview定义的datakeyname所设置的值,一般是ID
if (id > 0) //如果id不为0时
{
DJ_UserUnit uns = new DJ_UserUnit();
uns.UGID = id;
bool res = new DJ_UserUnitManager().UserUnit_Del(uns); //删除
AspNetPagerCount();
LV1.EditIndex = -1; //返回原界面
Bind();
}
else
{
LV1.EditIndex = -1;
e.Cancel = true;
//Bind();
}
}
protected void LV1_ItemInserting(object sender, ListViewInsertEventArgs e)
{
string value = ((TextBox)e.Item.FindControl("UNameTextBox")).Text; //获取插主TextBox的值
Literal lt = (Literal)e.Item.FindControl("Lt2");
if (value != "") //如果值不为空
{
DJ_UserUnit uns = new DJ_UserUnit();
uns.UName = value;
bool res = new DJ_UserUnitManager().UserUnit_Join(uns); //插入
LV1.EditIndex = -1;
AspNetPagerCount();
Bind();
}
else
{
lt.Visible = true;
lt.Text = "<font color='red'>请输入添加的单位名称!</font>";
//LV1.EditIndex = -1;
e.Cancel = true;
//Bind();
}
}
然后在后面添加一个方法:
private void AspNetPagerCount()
{
AspNetPager1.RecordCount = (int)new DJ_UserUnitManager().UserUnit_Count(); //获取记录集总数
}
问题解决