Web 组合查询加 分页
使用ADO.NET 数据访问技术制作web端组合查询加分页的功能关键在于查询SQL语句的拼接
以Car 表为例 每页显示3条数据

数据访问类使用查询方法,tsql 查询的连接字符串,查询的参数放到Hashtable中
public List<Car> Select(string tsql, Hashtable hh)
{
List<Car> list = new List<Car>();
cmd.CommandText = tsql;
cmd.Parameters.Clear();
foreach (string k in hh.Keys)
{
cmd.Parameters.Add(k, hh[k]);
}
conn.Open();
SqlDataReader dr = cmd.ExecuteReader();
if (dr.HasRows)
{
while (dr.Read())
{
Car c = new Car();
c.Code = dr["Code"].ToString();
c.Name = dr["Name"].ToString();
c.Brand = dr["Brand"].ToString();
c.Oil = Convert.ToDecimal(dr["Oil"]);
c.Powers = Convert.ToInt32(dr["Powers"]);
c.Exhaust = Convert.ToInt16(dr["Exhaust"]);
c.Price = Convert.ToDecimal(dr["Price"]);
list.Add(c);
}
}
conn.Close();
return list;
}
后台代码封装查询连接字符的方法
/// <summary>
/// 拼接查询分页的SQL语句
/// </summary>
/// <param name="pagenumber">显示第几页</param>
/// <param name="isall">查最大页数的SQL语句</param>
/// <returns>查询sql语句的字符创</returns>
public string ReturnTsql(int pagenumber,bool isall)
{
hs.Clear();//清空哈希表数据
int count = ;//文本是否输内容
string Tsql = "select top " + pagecount + " *from Car";
if (isall)//true查所有拼接的语句
Tsql = "select *from Car";
string tj = "";
if (!string.IsNullOrEmpty(TextBox_name.Text.Trim()))//文本框有内容
{
Tsql += " where Name like @a";
tj += "where Name like @a";
hs.Add("@a", "%" + TextBox_name.Text.Trim() + "%");
count++;
}
if (!string.IsNullOrEmpty(TextBox_oil.Text.Trim()))
{
if (count == )
{
Tsql += " where Oil" + DropDownList_oil.SelectedValue + " @b";
tj += " where Oil" + DropDownList_oil.SelectedValue + " @b";
}
else
{
Tsql += " and Oil" + DropDownList_oil.SelectedValue + " @b";
tj += " and Oil" + DropDownList_oil.SelectedValue + " @b";
}
hs.Add("@b", TextBox_oil.Text.Trim());
count++;
}
if (!string.IsNullOrEmpty(TextBox_price.Text.Trim()))
{
if (count == )
{
Tsql += " where Price" + DropDownList_pri.SelectedValue + " @c";
tj += " where Price" + DropDownList_pri.SelectedValue + " @c";
}
else
{
Tsql += " and Price" + DropDownList_pri.SelectedValue + " @c";
tj += " and Price" + DropDownList_pri.SelectedValue + " @c";
}
hs.Add("@c", TextBox_price.Text.Trim());
count++;
}
//最终拼接的TSQL语句
if (count > )//文本框有输入
{
Tsql += " and Code not in(select top " + (pagecount * (pagenumber - )) + " Code from Car " + tj + ")";
}
else//没有输入
{
Tsql += " where Code not in(select top " + (pagecount * (pagenumber - )) + " Code from Car " + tj + ")";
}
return Tsql;
}
//查询最大页数
public int Maxpage(string tsql,Hashtable has)
{
List<Car> clist = new CarData().Select(tsql, has);
return Convert.ToInt32(Math.Ceiling(clist.Count / (pagecount * 1.0)));
}
功能代码 (查询 首页 下一页)
int pagecount = ;//每页显示的数据
Hashtable hs = new Hashtable();//实例化一个全局的哈希表集合
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)//加载页面数据绑定
{
Repeater1.DataSource = new CarData().Select(ReturnTsql(,false), hs);
Repeater1.DataBind();
Label_now.Text = "";//当前页数
Label_max.Text = Maxpage(ReturnTsql(,true), hs).ToString();//最大页数
DropDownList_jump.Items.Clear();//跳转页下拉列表数据绑定
for (int i = ; i <= Maxpage(ReturnTsql(, true), hs); i++)
{ DropDownList_jump.Items.Add(new ListItem(i.ToString(),i.ToString()));
}
}
Button_sel.Click += Button_sel_Click;//查询
LinkButton_frist.Click += LinkButton_frist_Click;//首页
LinkButton_prve.Click += LinkButton_prve_Click;//上一页
LinkButton_next.Click += LinkButton_next_Click;// 下一页
LinkButton_last.Click += LinkButton_last_Click;//尾页
DropDownList_jump.SelectedIndexChanged += DropDownList_jump_SelectedIndexChanged;//跳转
}
void Button_sel_Click(object sender, EventArgs e)// 查询
{
Label_now.Text = "";
Label1.Text = ReturnTsql(, false);
Repeater1.DataSource = new CarData().Select(ReturnTsql(, false), hs);
Repeater1.DataBind();
Label_max.Text = Maxpage(ReturnTsql(, true), hs).ToString();
DropDownList_jump.Items.Clear();
for (int i = ; i <= Maxpage(ReturnTsql(, true), hs); i++)
{ DropDownList_jump.Items.Add(new ListItem(i.ToString(), i.ToString()));
}
}
void LinkButton_frist_Click(object sender, EventArgs e)//首页
{
Label_now.Text = "";
Repeater1.DataSource = new CarData().Select(ReturnTsql(, false), hs);
Repeater1.DataBind();
//上一页按钮不可用,下一页按钮可用
LinkButton_next.Enabled = true;
LinkButton_prve.Enabled = false;
}
void LinkButton_next_Click(object sender, EventArgs e)//下一页
{
int pagenumber = Convert.ToInt32(Label_now.Text) + ;
Repeater1.DataSource = new CarData().Select(ReturnTsql(pagenumber, false), hs);
Repeater1.DataBind();
Label_now.Text = pagenumber.ToString();//改变当前页数的显示数据
if (pagenumber >= Maxpage(ReturnTsql(,true),hs))//大于最大页数下一页按钮不可用
{
LinkButton_next.Enabled = false;
}
LinkButton_prve.Enabled = true;
}
Web 组合查询加 分页的更多相关文章
- LINQ 小项目【组合查询、分页】
使用 linq 在网页上对用户信息增删改,组合查询,分页显示 using System; using System.Collections.Generic; using System.Linq; us ...
- webform组合查询和分页
1.组合查询(1)数据访问类 //参数1:SQL语句 参数2:哈希表public List<Users> chas(string s,Hashtable has) { List<Us ...
- Linq组合查询与分页组合查询结合
1.组合查询 <div>姓名:<asp:TextBox ID="T1" runat="server"></asp:TextBox& ...
- LinQ 组合查询与分页
1.以开头查 public List<Car> Select1(string a){ return con.Car.Where(r => r.Name.StartsWith(a)). ...
- spring boot jpa 多条件组合查询带分页的案例
spring data jpa 是一个封装了hebernate的dao框架,用于单表操作特别的方便,当然也支持多表,只不过要写sql.对于单表操作,jpake可以通过各种api进行搞定,下面是一个对一 ...
- LinkQ 组合查询与分页
1.以开头查 public List<Car> Select1(string a){ return con.Car.Where(r => r.Name.StartsWith(a)). ...
- LINQ 组合查询 和分页查询的使用
前端代码 <%@ Page Language="C#" AutoEventWireup="true" Debug="true" Cod ...
- linq分页组合查询
一.linq高级查 1.模糊查(字符串包含) 1 public List<User> Select(string name) 2 { 3 return con.User.Where(r = ...
- Webform(Linq高级查、分页、组合查询)
一.linq高级查 1.模糊查(包含) 1 public List<User> Select(string name) 2 { 3 return con.User.Where(r => ...
随机推荐
- 一个防止误删MSSQL数据库的方法
一个防止误删MSSQL数据库的方法 环境:Windows2008 R2 .SQL 2012 今天发现一个有趣的现象,之前数据库服务器的其中几个数据库做过镜像,不过现在已经删除了,今天又要在那台服务器上 ...
- etcd:用于服务发现的键值存储系统
etcd是一个高可用的键值存储系统,主要用于共享配置和服务发现.etcd是由CoreOS开发并维护的,灵感来自于 ZooKeeper 和 Doozer,它使用Go语言编写,并通过Raft一致性算法处理 ...
- JVM 备注
一.堆内存分布: JAVA 分为堆内存和栈内存,GC主要针对堆内存 1)Young: 存放新生内存对象 1.1)Eden JVM 刚开始分配的对象 1.2)Survivor1(from) 1.3)Su ...
- Java Socket
什么是Socket Socket的概念很简单,它是网络上运行的两个程序间双向通讯的一端,既可以接收请求,也可以发送请求,利用它可以较为方便地编写网络上数据的传递. 所以简而言之,Socket就是进程通 ...
- Linux 配置YUM
标签:MYSQL/linux 概述 文章主要介绍配置163,mysql,epel这三个yum源. 目录 概述 步骤 下载安装包 卸载自带的yum 安装yum包 添加yum 总结 步骤 安装163源 注 ...
- Java集合类的总结
Java语言的java.until包中提供了一些集合类,这些集合类又被称为容器.说到集合就会想到数组,集合类与数组的不同之处是,数组的长度是固定的,集合的长度是可变的:数组用来存放基本数据类型,集合从 ...
- 自定义模拟一个Spring IOC容器
一.模拟一个IOC容器: 介绍:现在,我们准备使用一个java project来模拟一个spring的IOC容器创建对象的方法,也就是不使用spring的jar自动帮助我们创建对象,而是通过自己手动书 ...
- 神奇的CSS sprites,制作特效的新方法
本文主要内容简译自Dava Shea的英文文章 CSS Sprites: Image Slicing’s Kiss of Death,如果觉得博主讲的含糊不清的话,可以看作者原文. 熟悉了常规切图的我 ...
- 在SQL Server中将数据导出为XML和Json
有时候需要一次性将SQL Server中的数据导出给其他部门的也许进行关联或分析,这种需求对于SSIS来说当然是非常简单,但很多时候仅仅需要一次性导出这些数据而建立一个SSIS包就显得小题大做 ...
- 我和linux的第二十二天
这几天学校的事情比较多,空闲时间也有,但没有利用起来.前些天听国学课,发觉自己心性还是不很成熟,以前自觉遇到君子应用君子的方法相处,遇到小人用小人的方法对待,老师一句话,疏清了自己.当我们用小人的方法 ...