ListView +ObjectDataSource+DataPager

来源:互联网 发布:掌上公交软件下载 编辑:程序博客网 时间:2024/06/06 07:09

1

一、配置objectDataSource
---选择业务逻辑层的类
二、配置Select对应的方法,【必须是一个带两个整型参数的方法】,第一个参数表示要查看的第一条记录的前一条。比如我要查看的是第31-40条数据,那么第一个参数就是30。第二个参数每页最多能显示的记录条数pagesize。
这两个参数都是由分页控件DataPager来传递的。无需我们考虑。(再次强调:这两个参数都是DataPager分页控件自动给我们传递的,无需我们考虑。我们仅仅需要设置一下DataPager控件的PageSize属性就可以了,这个属性是定义每页显示多少条数据的。即:页大小)


between 30+1 and 30+1+pagesize
31-35


对于select对应的查询方法中的两个参数,在配置数据源的时候不需要指定。并且删除生成的参数代码。

三、配置ObjectDataSource启用分页:即将EnablePaging属性设置为true  (EnablePaging=true)

四、设置objectDataSource的两个属性:
StartRowIndexParameterName="StartRow"   这个属性的的值必须与查询方法中的第一个参数的名字一样。(例如:既然ListView控件要分页显示,那么我们就会调用Bll层中的分页方法,这个参数的值就是分页方法的第一个参数,这个参数表示要查看的第一条记录的前一条)
MaximumRowsPrameterName="PageSize"  这里指定的参数就是select查询方法中的第二个参数(即:页大小,即:每页显示多少条数据)(必须与业务逻辑层中的查询方法的第二个参数名称一致)这个属性的的值必须与查询方法中的第一个参数的名字一样


如下:(注意:这个分页方法,第一个参数一定是要查询第几行的前一行,第二个参数是页大小)

/// <summary>/// 分页查询/// </summary>/// <param name="StartRow">开始行的前一行</param>/// <param name="PageSize">页大小</param>/// <returns></returns>/// 开是行的前一行的意思就是:假如我要查询31-40条数据,那么前一行就是30public List<UserInfo> PagingPage(int StartRow, int PageSize){    GetUserInfoCount();    List<UserInfo> list = new List<UserInfo>();    string sql = "select top " + PageSize + " * from (select ROW_NUMBER() OVER(ORDER BY id) as rowNumber,* from t_userinfo) as A where rowNumber>" + StartRow;    DataTable dt = SqlHelper.ExecuteDataTable(sql, null);    UserInfo u = null;    for (int i = 0; i < dt.Rows.Count; i++)    {        u = new UserInfo();        u.Id = int.Parse(dt.Rows[i][1].ToString());        u.UserName = dt.Rows[i][2].ToString();        u.Name = dt.Rows[i][3].ToString();        u.Age = Convert.ToInt32(dt.Rows[i][4].ToString());        list.Add(u);    }    return list;}

在给DataSource配置数据源的时候




五、设置ObjectDataSource的SelectCountMethod="GetCount";设置该属性为业务逻辑层的一个方法,这个方法的作用就是查询出当前表中一共有多少条记录:select count(*) from aspx_students

        /// <summary>        /// 获取表的总条数        /// </summary>        /// <returns></returns>        public int GetUserInfoCount()        {            string sql = "select count(*) from t_userinfo";            object count = SqlHelper.ExecuteScalar(sql, null);            return Convert.ToInt32(count); ;        }


六、
-----添加一个ListView控件,设置数据源为ObjectDataSource
-----配置ListView,启用“编辑”、“删除”、“插入”,不要启用“分页”


七、
---添加一个DataPager控件。设置该控件的PagedControlID为对应的ListView
---设置该控件的PageSize属性,每页显示多少条。
---为该控件选择一个分页导航的样式。


八,使用DataPager控件为ListView控件分页的时候一定要注释掉(禁用掉)ObjectDataSource源中的以下代码
 <%-- <SelectParameters>      <asp:Parameter Name="currentPage" Type="Int32" />      <asp:Parameter Name="pageSize" Type="Int32" />      </SelectParameters>--%>


九:如果删除按钮无效果:那么可能需要设置ListView控件的DataKeyNames属性。这个属性的值就是 ListView控件绑定数据的Model 的主键

例如:
















0 0
原创粉丝点击