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 => ...
随机推荐
- C#与Java对比学习:数据类型、集合类、栈与队列、迭达、可变参数、枚举
数据类型: C#:String与StringBuilder Java:String与StringBuffer 第一个不习惯是string的第一个字母必须大写了. 第二个不习惯是int得写成Intege ...
- 微软开源 WCF 分布式服务框架,并入 .NET 基金会项目
微软北京时间2015.5.20 在其 .NET Foundation GitHub 开源项目页中开放了 WCF 分布式服务框架的代码.WCF突然之间成为一个热门话题,在各大网站上都有不同的报道:dot ...
- Lesson 5 No wrong numbers
Text Mr.James Scott has a garage in Silbury and now he has just bought another garage in Pinhurst. P ...
- Hibernate的三种状态及对象生命周期
理解Hibernate的三种状态,更利于理解Hibernate的运行机制,这些可以让你在开发中对疑点问题的定位产生关键性的帮助. 三种状态 临时状态(Transient):在通过new关键字, ...
- 我只是想开个饭店—— JavaIO模型的演变
Java的IO...真的是我所见过的高级语言中.最最复杂的... 看着这个图我也是醉了. 但是不知不觉间,java的IO已经更新到了NIO.2了,IO库早已经不止是这个样子了,那么这个过程中,它们经历 ...
- Python模拟HttpRequest的方法总结
Python可以说是爬网的利器,本文主要介绍了一些python来模拟http请求的一些方法和技巧. Python处理请求的类库有两个,urllib,urllib2. 这两个类库并不是一个类库的两个不同 ...
- ASP.NET MVC 5 - 给数据模型添加校验器
在本节中将会给Movie模型添加验证逻辑.并且确保这些验证规则在用户创建或编辑电影时被执行. 拒绝重复 DRY ASP.NET MVC 的核心设计信条之一是DRY: "不要重复自己(DRY ...
- maven package 知识(转载)
“打包“这个词听起来比较土,比较正式的说法应该是”构建项目软件包“,具体说就是将项目中的各种文件,比如源代码.编译生成的字节码.配置文件.文档,按照规范的格式生成归档,最常见的当然就是JAR包和WAR ...
- 台式电脑、笔记本快捷选择Boot(启动项快捷键)大全
我们在安装系统时,会去设置电脑是从硬盘启动.U盘启动.光驱启动.网卡启动. 一般设置的方法有两种:一种是进BIOS主板菜单设置启动项顺序:另一种就是我在这里要介绍的快捷选择启动项. 以下是网友整理的各 ...
- MyEclipse打开 HTML 报错Failed to create the part's controls
拷贝代码时有时会弹出这个错误,页面仍然可以访问,但是无法编辑很郁闷. MyEclipse默认打开编辑页面是MyEclipse visual html designer 右击html页面选择open ...