手动绑定listview结合aspnetpager高效分页实例,不使用ObjectDataSource

本实例分离出来

环境为: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();   //获取记录集总数
        }

问题解决

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值