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(分页与组合查询配合使用)的更多相关文章

  1. ajax分页与组合查询配合使用

    使用纯HTML页与js.ajax.Linq实现分页与组合查询的配合使用 <body> <div id="top"><input type=" ...

  2. webform 分页、组合查询综合使用

    界面: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx ...

  3. WebForm 分页与组合查询

    1.封装实体类 2.写查询方法 //SubjectData类 public List<Subject> Select(string name) { List<Subject> ...

  4. WebForm 分页、组合查询--2017年1月5日

    sql = "select * from Commodity"; hs = new Hashtable(); if (txt_name.Text.Trim() != "& ...

  5. Webform(Linq高级查、分页、组合查询)

    一.linq高级查 1.模糊查(包含) 1 public List<User> Select(string name) 2 { 3 return con.User.Where(r => ...

  6. Webform(分页、组合查询)

    一.分页 1.写查询方法: public List<Student> Select(int PageCount, int PageNumber) {//PageCount为每页显示条数,P ...

  7. WebForm之Linq组合查询

    组合查询 protected void Button1_Click(object sender, EventArgs e) { //默认查询所有,返回的是Table类型,转换成IQueryAble类型 ...

  8. Linq的分页与组合查询的配合使用

    1.首先使用Linq连接数据库,并扩展属性 public partial class User { public string SexStr { get { string end = "&l ...

  9. linq分页组合查询

    一.linq高级查 1.模糊查(字符串包含) 1 public List<User> Select(string name) 2 { 3 return con.User.Where(r = ...

随机推荐

  1. 使用XSD校验Mybatis的SqlMapper配置文件(2)

    编写好XSD文件,然后来看怎么使用XSD文件校验,并解析SqlMapper文件,也就是实现doParseSqlMapperResourceWithSchema()方法. 为了实现这个功能,有两个基本要 ...

  2. 深入理解CSS中的长度单位

    前面的话 本文分为绝对长度单位和相对长度单位来介绍CSS中的长度单位的主要知识 绝对长度单位 绝对长度单位代表一个物理测量 像素px(pixels) 在web上,像素px是典型的度量单位,很多其他长度 ...

  3. Sparse Filtering 学习笔记(一)网络结构与特征矩阵

      Sparse Filtering 是一个用于提取特征的无监督学习算法,与通常特征学习算法试图建模训练数据的分布的做法不同,Sparse Filtering 直接对训练数据的特征分布进行分析,在所谓 ...

  4. CSS3 过渡特性创建信封效果的联系表单

    最近给大家分享 CSS3 效果比较多,都是充分运用了 CSS3 来实现的.通过 CSS3 的新特性,我们创作出好的交互和效果的可能性大大增加.这篇文章中,我想与大家分享使用 CSS3 过渡特性实现的信 ...

  5. Metronic – 超赞!基于 Bootstrap 的响应式后台管理模板

    Metronic 是一套精美的响应式后台管理模板,基于强大的 Twitter Bootstrap 框架实现.Metronic 拥有简洁优雅的 Metro UI 风格界面,6 种颜色可选,76 个模板页 ...

  6. Windows下Eclipse提交MR程序到HadoopCluster

    作者:Syn良子 出处:http://www.cnblogs.com/cssdongl 欢迎转载,转载请注明出处. 以前Eclipse上写好的MapReduce项目经常是打好包上传到Hadoop测试集 ...

  7. Windows Azure Service Bus (4) Service Bus Queue和Storage Queue的区别

    <Windows Azure Platform 系列文章目录> 熟悉笔者文章的读者都了解,Azure提供两种不同方式的Queue消息队列: 1.Azure Storage Queue 具体 ...

  8. jQuery选择器(一)

    晚上闲着没事,正好用来整理下jQuery的选择器,毕竟没有总结就不算学习嘛. 首先,对事件处理.遍历DOM和Ajax操作,都依赖于选择器. 1.CSS选择器 要使用某个HTML元素,就先要找到它,而c ...

  9. 使用Microsoft Fakes进行单元测试(1)

    一:什么是单元测试 单元测试是对软件进行准确性验证的步骤.单元测试并不进行整个软件功能的测试,仅仅是对于最小工作单元的测试.一般最小工作单元就是指方法/函数等. 这里并不打算对单元测试的概念及基础进行 ...

  10. 各大IT公司校园招聘程序猿笔试、面试题集锦

    转自:http://blog.csdn.net/hackbuteer1/article/details/7959921#t4 百度一面 1.给定一个字符串比如“abcdef”,要求写个函数编程“def ...