GridView数据库分页+自定义分页导航(一):数据库分页

    GridView控件自带分页功能,不过他是需要我们将所有数据查出来放到页面上,然后通过他内置的功能来实现分页,我本人不太喜欢,但对于小量数据时挺方便的。

    这里我介绍一下数据库分页和自定义分页导航(使用GridView控件)

其效果如下图:


1、首先,我们要给一个空模板好让我们可以绑定数据。这个模板要有表头:


选择BounField【添加】在邮编DataField(查询出来的数据表里的字段名),HeaderText(页面显示的名称)

这里不要勾选【自动生成字段】


    操作这一列,是空的,用来放我们的控件按钮的,所以选择TemplateField,然后添加表头名,主要,最后要把【自动生成字段】的勾去掉,才能让模板呈现我们想要的列。


操作完后的样子:


    然后我们在操作里添加【编辑】【删除】按钮。



在这里我们拖拉或双击【Button】控件,要两个,一个编辑,一个删除。不添加事件。然后选择【编辑】按钮,到右下角找他的属性CommandName,改为Edit,通用【删除】按钮也是,改为Delete,这是固定的,同时还有其他值,比如Cancel(取消),Update(更新)等,固定值,只有这样设置,我们的按钮才能出发GridView里的事件。


然后,点击右上角的小三角,调出菜单,选择【EditItemTemplate】,会出现一个空的模板,在里面同样方法再添加两个按钮【保存】【取消】


    EditItemTemplate里的东西,只有在GridView处于编辑状态下才会显示的。

结束编辑模板后:


    2、数据库分页,按固定条数查出数据,类似于下面的,尽量不要使用DataTable。

    还要注意的就是,@这个符号后的在单引号下不会被识别为变量,从而,  '%镇%'=>'%@zhen%'=>‘%’+str+‘%’ 

 public DataTable selectByStr(string str, int pageStart, int pageSize)
        {
            SqlConnection conn = new SqlConnection(connStr);
            conn.Open();
            int start = (pageStart - 1) * pageSize + 1;
            int end = pageStart * pageSize;
            String sql = @" select * from
    (select *,ROW_NUMBER() over(order by id) as rowid    from (
		select c.id,a.name as pname,b.name as cname,c.name as name,c.people_size,c.area,c.XinzhengDaima,c.Quhao,c.email
		from province a,city b,jiedao c 
		 where a.id = b.parent_id and b.id = c.parent_id 
		 ) aa
		where  aa.pname like  @pname or aa.cname like  @cname or aa.name like @name) a
	where rowid between  @start and  @end";

            SqlCommand cmd = new SqlCommand(sql, conn);

            cmd.Parameters.AddWithValue("@pname", "%" + str + "%");
            cmd.Parameters.AddWithValue("@cname", "%" + str + "%");
            cmd.Parameters.AddWithValue("@name", "%" + str + "%");
            cmd.Parameters.AddWithValue("@start", start);
            cmd.Parameters.AddWithValue("@end", end);
            //方法一
            //info对象里要包含GridView里要求的字段
            /* List<Info> list = new List<Info>();
            while (sdr.Read())
            {
                list.Add(new Info(Convert.ToInt32(sdr["id"]), sdr["pname"].ToString(), sdr["cname"].ToString(), sdr["name"].ToString(), Convert.ToDouble(sdr["people_size"]), Convert.ToDouble(sdr["area"]), sdr["XinzhengDaima"].ToString(), sdr["Quhao"].ToString(), sdr["email"].ToString()));
            }
            DBHelper.closeConn(conn);
            return list;*/
            //方法二
            /*SqlDataAdapter sda = new SqlDataAdapter(cmd);
            DataSet ds = new DataSet();
            sda.Fill(ds);
            return ds;*/
            //方法三
            SqlDataAdapter sda = new SqlDataAdapter(cmd);
            DataTable ds = new DataTable();
            sda.Fill(ds);
            conn.Close();
            return ds;
        }

    然后是绑定数据,将下面代码放一个方法里调用,比如ViewData()方法

 DataTable dt = null;
            //全部数据
            if (string.IsNullOrEmpty(SelectStr))
                dt = countyB.SelectAll(PageIndex,PageSize);
            else //查询的数据
                dt = countyB.selectByStr(SelectStr, PageIndex,PageSize);
            if (dt.Rows.Count != 0)
            {
                codeTable.DataSource = dt;
                codeTable.DataBind();
            }
    在page_load方法里:第一页数据显示成功,
  protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                viewData();
            }
        }

效果如下,显示了指定的数据




猜你喜欢

转载自blog.csdn.net/qq_28911061/article/details/80901109