WebForm 分页与组合查询
1.封装实体类
2.写查询方法
- //SubjectData类
- public List<Subject> Select(string name)
- {
- List<Subject> list = new List<Subject>();
- cmd.CommandText = "select *from Subject where SubjectName like @a ";
- cmd.Parameters.Clear();
- cmd.Parameters.Add("@a","%"+name+"%");
- conn.Open();
- SqlDataReader dr = cmd.ExecuteReader();
- if (dr.HasRows)
- {
- while (dr.Read())
- {
- Subject s = new Subject();
- s.SubjectCode = dr[].ToString();
- s.SubjectName = dr[].ToString();
- list.Add(s);
- }
- }
- conn.Close();
- return list;
- }
- //StudentData类
- /// <summary>
- /// 查询方法
- /// </summary>
- /// <param name="tsql">SQL语句</param>
- /// <param name="hh">哈希表</param>
- /// <returns></returns>
- public List<Student> Select(string tsql,Hashtable hh)
- {
- List<Student> list = new List<Student>();
- cmd.CommandText = tsql;
- cmd.Parameters.Clear();
- foreach( string s in hh.Keys)
- {
- cmd.Parameters.Add(s,hh[s]);
- }
- conn.Open();
- SqlDataReader dr = cmd.ExecuteReader();
- if (dr.HasRows)
- {
- while (dr.Read())
- {
- Student s = new Student();
- s.Code = dr[].ToString();
- s.Name = dr[].ToString();
- s.Sex = Convert.ToBoolean(dr[]);
- s.Birthday = Convert.ToDateTime(dr[]);
- s.SubjectCode = dr[].ToString();
- s.Nation = dr[].ToString();
- list.Add(s);
- }
- }
- conn.Close();
- return list;
- }
- 查询方法
3.Page_Load部分,最大页方法
- int PageCount = ; //每页显示条数
- Hashtable hs = new Hashtable();
- protected void Page_Load(object sender, EventArgs e)
- {
- if(!IsPostBack)
- {
- string tsql = "select top "+PageCount+" *from Student";//查询前PageCount条数据
- //Repeater1数据源指向
- List<Student> list = new StudentData().Select(tsql,hs);
- Repeater1.DataSource = list;
- Repeater1.DataBind();
- Label2.Text = "";//第一页
- //获取最大页
- string sql = "select *from Student";
- Label3.Text = MaxPageNumber(sql,hs).ToString();
- for (int i = ; i <= MaxPageNumber(sql,hs); i++)//给可快速跳转列表框赋值
- {
- DropDownList2.Items.Add(new ListItem(i.ToString(), i.ToString()));
- }
- }
- }
- Page_Load
- public int MaxPageNumber(string sql, Hashtable hs)
- {
- List<Student> list = new StudentData().Select(sql, hs);//查询所有数据
- double de = list.Count / (PageCount * 1.0);
- int aa = Convert.ToInt32(Math.Ceiling(de));//取上限
- return aa;
- }
- 获取最大页
4.根据组合查询拼接语句方法
- /// <summary>
- ///
- /// </summary>
- /// <param name="sql">拼接查询前PageCount条数据的语句</param>
- /// <param name="sql2">查询所有的语句</param>
- /// <param name="tj">用于分页查询与sql等拼接</param>
- /// <param name="count">判断前几项是否为空</param>
- private void Tsql(out string sql, out string sql2,out string tj,out int count)
- {
- count = ;
- sql = "select top " + PageCount + " *from Student";
- sql2 = "select *from Student";
- tj = "";
- //性别不为空
- if (!string.IsNullOrEmpty(tb_sex.Text.Trim()))
- {//判断输入的是男是女,其它输入默认为未输入内容
- if (tb_sex.Text.Trim() == "男")
- {
- sql += " where Sex = @a";
- sql2 += " where Sex = @a";
- tj += " where Sex = @a";
- hs.Add("@a", "true");
- count++;
- }
- else if (tb_sex.Text.Trim() == "女")
- {
- sql += " where Sex = @a";
- sql2 += " where Sex = @a";
- tj += " where Sex = @a";
- hs.Add("@a", "false");
- count++;
- }
- }
- //年龄不为空
- if (!string.IsNullOrEmpty(tb_age.Text.Trim()))
- {
- int a = DateTime.Now.Year;//获取当前时间的年
- try//确保输入的是数字
- {
- int ag = Convert.ToInt32(tb_age.Text.Trim());
- int g = a - ag;
- DateTime d = Convert.ToDateTime(g.ToString() + "-1-1");
- if (DropDownList3.SelectedValue == ">=")//小于或等于您输入的年龄,即大于或等于某个时间
- {
- if (count == )//前面的一项未输入(性别)
- {
- sql += " where Birthday " + DropDownList3.SelectedValue + "@b";
- sql2 += " where Birthday " + DropDownList3.SelectedValue + "@b";
- tj += " where Birthday " + DropDownList3.SelectedValue + "@b";
- }
- else
- {
- sql += " and Birthday " + DropDownList3.SelectedValue + "@b";
- sql2 += " and Birthday " + DropDownList3.SelectedValue + "@b";
- tj += " and Birthday " + DropDownList3.SelectedValue + "@b";
- }
- hs.Add("@b", d);
- }
- else//大于或等于您输入的年龄,即小于或等于某个时间
- {
- DateTime dd = Convert.ToDateTime(g.ToString() + "-12-31");
- if (count == )
- {
- sql += " where Birthday " + DropDownList3.SelectedValue + "@b";
- sql2 += " where Birthday " + DropDownList3.SelectedValue + "@b";
- tj += " where Birthday " + DropDownList3.SelectedValue + "@b";
- }
- else
- {
- sql += " and Birthday " + DropDownList3.SelectedValue + "@b";
- sql2 += " and Birthday " + DropDownList3.SelectedValue + "@b";
- tj += " and Birthday " + DropDownList3.SelectedValue + "@b";
- }
- hs.Add("@b", dd);
- }
- count++;
- }
- catch
- {
- }
- }
- if (!string.IsNullOrEmpty(tb_s.Text.Trim()))//判断专业是否为空
- {
- List<Subject> li = new SubjectData().Select(tb_s.Text.Trim());//调用查询方法模糊查询专业
- if (li.Count <= )//未查到数据
- {
- }
- else//查到数据
- {
- int cou = ;//用于查到的为多条数据
- foreach (Subject ub in li)
- {
- if (li.Count == )//只查到一条数据
- {
- if (count == )//性别与年龄输入框都未输入内容
- {
- sql += " where SubjectCode =@c";
- sql2 += " where SubjectCode =@c";
- tj += " where SubjectCode =@c";
- }
- else
- {
- sql += " and SubjectCode =@c";
- sql2 += " and SubjectCode =@c";
- tj += " and SubjectCode =@c";
- }
- hs.Add("@c", ub.SubjectCode);
- cou++;
- count++;
- }
- else//查到多条数据
- {
- if (cou == )//第一次遍历
- {
- if (count == )
- {
- sql += " where (SubjectCode =@c";
- sql2 += " where (SubjectCode =@c";
- tj += " where (SubjectCode =@c";
- }
- else//性别与年龄输入框都未输入内容
- {
- sql += " and (SubjectCode =@c";
- sql2 += " and (SubjectCode =@c";
- tj += " and (SubjectCode =@c";
- }
- hs.Add("@c", ub.SubjectCode);
- cou++;
- }
- else
- {
- sql += " or SubjectCode =@d)";
- sql2 += " or SubjectCode =@d)";
- tj += " or SubjectCode =@d)";
- hs.Add("@d", ub.SubjectCode);
- }
- }
- }
- }
- }
- }
- Tsql方法
5.组合查询 按钮功能赋予
- void Button2_Click(object sender, EventArgs e)
- {
- string sql;//拼接查询前PageCount条数据的语句
- string sql2;//查询所有的语句
- string tj;
- int count;
- Tsql(out sql, out sql2,out tj,out count);
- Repeater1.DataSource = new StudentData().Select(sql, hs);//数据指向
- Repeater1.DataBind();
- Label2.Text = "";
- Label3.Text = MaxPageNumber(sql2,hs).ToString();//获取当前的最大页
- DropDownList2.Items.Clear();
- for (int i = ; i <= MaxPageNumber(sql2,hs); i++)//更新快捷跳转列表框
- {
- DropDownList2.Items.Add(new ListItem(i.ToString(), i.ToString()));
- }
- }
- 组合查询
6.分页代码
- void btn_next_Click(object sender, EventArgs e)
- {
- int pagec = Convert.ToInt32(Label2.Text) + ;//获取下一页为第几页
- string sql;//拼接查询前PageCount条数据的语句
- string sql2;//查询所有的语句
- string tj;
- int count;
- Tsql(out sql, out sql2, out tj, out count);
- if (pagec > MaxPageNumber(sql2,hs))//当前为最大页
- {
- return;
- }
- else
- {
- if(count>)//进行的是组合查询的下一页跳转
- {
- sql += " and Code not in(select top " + (PageCount * (pagec - )) + " Code from Student " + tj + ")";
- }
- else
- {
- sql += " where Code not in(select top " + (PageCount * (pagec - )) + " Code from Student " + tj + ")";
- }
- }
- Repeater1.DataSource = new StudentData().Select(sql, hs);//数据指向
- Repeater1.DataBind();
- Label2.Text = pagec.ToString();//更新当前页面
- DropDownList2.SelectedValue = pagec.ToString();
- }
- 下一页
- void btn_prev_Click(object sender, EventArgs e)
- {
- int pagec = Convert.ToInt32(Label2.Text) - ;//获取上一页为第几页
- string sql;//拼接查询前PageCount条数据的语句
- string sql2;
- string tj;
- int count;
- Tsql(out sql, out sql2, out tj, out count);
- if (pagec <= )//当前为第一页
- {
- return;
- }
- if (count > )//进行的是组合查询的上一页跳转
- {
- sql += " and Code not in(select top " + (PageCount * (pagec - )) + " Code from Student " + tj + ")";
- }
- else
- {
- sql += " where Code not in(select top " + (PageCount * (pagec - )) + " Code from Student " + tj + ")";
- }
- List<Student> list = new StudentData().Select(sql, hs);//数据指向
- Repeater1.DataSource = list;
- Repeater1.DataBind();
- Label2.Text = pagec.ToString();//更新当前页面
- DropDownList2.SelectedValue = pagec.ToString();
- }
- 上一页
上一页
- void btn_first_Click(object sender, EventArgs e)
- {
- string sql;
- string sql2;
- string tj;
- int count;
- Tsql(out sql, out sql2, out tj, out count);
- List<Student> list = new StudentData().Select(sql, hs);//数据指向
- Repeater1.DataSource = list;
- Repeater1.DataBind();
- Label2.Text = "";
- DropDownList2.SelectedValue = "";
- }
- 跳转到第一页
首页
- void btn_end_Click(object sender, EventArgs e)
- {
- string sql;
- string sql2;
- string tj;
- int count;
- Tsql(out sql, out sql2, out tj, out count);
- if (count > )//进行的是组合查询的末页跳转
- {
- sql += " and Code not in(select top " + (PageCount * (MaxPageNumber(sql2,hs) - )) + " Code from Student " + tj + ")";
- }
- else
- {
- sql += " where Code not in(select top " + (PageCount * (MaxPageNumber(sql2, hs) - )) + " Code from Student " + tj + ")";
- }
- List<Student> list = new StudentData().Select(sql, hs);//数据指向
- Repeater1.DataSource = list;
- Repeater1.DataBind();
- Label2.Text = MaxPageNumber(sql2,hs).ToString();
- DropDownList2.SelectedValue = MaxPageNumber(sql2,hs).ToString();
- }
- 最后一页跳转
末页
- void DropDownList2_SelectedIndexChanged(object sender, EventArgs e)
- {
- string sql;
- string sql2;
- string tj;
- int count;
- Tsql(out sql, out sql2, out tj, out count);
- if (count > )//进行的是组合查询的快捷跳转
- {
- sql += " and Code not in(select top " + (PageCount * (Convert.ToInt32(DropDownList2.SelectedValue) - )) + " Code from Student " + tj + ")";
- }
- else
- {
- sql += " where Code not in(select top " + (PageCount * (Convert.ToInt32(DropDownList2.SelectedValue) - )) + " Code from Student " + tj + ")";
- }
- Repeater1.DataSource = new StudentData().Select(sql, hs);//数据指向
- Repeater1.DataBind();
- Label2.Text = DropDownList2.SelectedValue;
- }
- 快捷跳转
快捷跳转(跳至第...页)
WebForm 分页与组合查询的更多相关文章
- webform 分页、组合查询综合使用
界面: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx ...
- WebForm 分页、组合查询--2017年1月5日
sql = "select * from Commodity"; hs = new Hashtable(); if (txt_name.Text.Trim() != "& ...
- Webform(Linq高级查、分页、组合查询)
一.linq高级查 1.模糊查(包含) 1 public List<User> Select(string name) 2 { 3 return con.User.Where(r => ...
- ajax分页与组合查询配合使用
使用纯HTML页与js.ajax.Linq实现分页与组合查询的配合使用 <body> <div id="top"><input type=" ...
- Webform(分页与组合查询配合使用)
1.封装实体类 2.写查询方法 //SubjectData类 public List<Subject> Select(string name) { List<Subject> ...
- Webform(分页、组合查询)
一.分页 1.写查询方法: public List<Student> Select(int PageCount, int PageNumber) {//PageCount为每页显示条数,P ...
- WebForm之Linq组合查询
组合查询 protected void Button1_Click(object sender, EventArgs e) { //默认查询所有,返回的是Table类型,转换成IQueryAble类型 ...
- Linq的分页与组合查询的配合使用
1.首先使用Linq连接数据库,并扩展属性 public partial class User { public string SexStr { get { string end = "&l ...
- linq分页组合查询
一.linq高级查 1.模糊查(字符串包含) 1 public List<User> Select(string name) 2 { 3 return con.User.Where(r = ...
随机推荐
- Dynamics CRM JS的调试的弊端解决办法
说道CRMJS的调试的博客,之前已经有人写过.很简单,和平常网站JS的调试过程大致相同. 但是Dynamics 中JS调试最麻烦的莫过于出错之后需要修改代码了.因为随着JS代码的修改,伴随着需要保存和 ...
- WPF界面按钮美化
在App.xaml里加入全局按钮样式 <Application x:Class="WpfButton.App" xmlns="http://schemas.micr ...
- noip模拟赛:部队[技巧?思想?]
王国军总指挥——卡西乌斯准将决定重建情报局,需要从全国各地挑选有能力的士兵,选择的标准为A,B两种能力.对于每个候选士兵,如果存在另一名士兵的两项能力均大于等于他,那么他将被淘汰.(注意:若两名士兵两 ...
- vijos1004 博弈论
一道挺简单的博弈论题 感觉自己也没有很规范的学过博弈论吧,就是偶尔刷到博弈论的题目,感受一下推导的过程,大概能领悟些什么 我们设2001.11.4必败,推上去,即2001.10.4和2001.11.3 ...
- Ruby on rails3
Ruby on rails初体验(三) 继体验一和体验二中的内容,此节将体验二中最开始的目标来实现,体验二中已经将部门添加的部分添加到了公司的show页面,剩下的部分是将部门列表也添加到公司的显示 ...
- [google面试CTCI] 1-6.图像旋转问题
[字符串与数组] Q:Given an image represented by an NxN matrix, where each pixel in the image is 4 bytes, wr ...
- Block formatting context
不会JS中的OOP,你也太菜了吧!(第一篇) 一.你必须知道的 1) 字面量 2) 原型 3) 原型链 4) 构造函数 5) 稳妥对象(没有公共属性,而且其方法也不引用this的对象.稳妥对象适合 ...
- IOS7学习之路十(百度地图API环境搭建)
百度地图官网的API开发教程链接:点击打开链接 我按照他的教程做的总出现"Apple Mach-O linker command failed with exit code 1"的 ...
- http概览
http概览 HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议.它可以使浏览器更加高效,使网络传输减少.它不仅 ...
- boost解析XML方法教程
boost库在解析XML时具有良好的性能,可操作性也很强下地址有个简单的说明 http://blog.csdn.net/luopeiyuan1990/article/details/9445691 一 ...