1、组合查询
(1)数据访问类

  1. //参数1:SQL语句 参数2:哈希表
    public List<Users> chas(string s,Hashtable has)
  2. {
  3. List<Users> List = new List<Users>();
  4. Users u = null;
  5. com.CommandText = s;
  6. com.Parameters.Clear();
  7. foreach(string aa in has.Keys)
  8. {
  9. com.Parameters.Add(aa,has[aa]);
  10. }
  11. con.Open();
  12. SqlDataReader dr = com.ExecuteReader();
  13. if (dr.HasRows)
  14. {
  15. while (dr.Read())
  16. {
  17. u = new Users()
  18. {
  19. UserName = dr[].ToString(),
  20. PassWord = dr[].ToString(),
  21. NickName = dr[].ToString(),
  22. Sex = Convert.ToBoolean(dr[]),
  23. Birthday = Convert.ToDateTime(dr[]),
  24. Phone = dr[].ToString(),
  25. Email = dr[].ToString(),
  26. Natoin = dr[].ToString(),
  27. Area = dr[].ToString(),
  28. };
  29. List.Add(u);
  30. }
  31. }
  32. con.Close();
  33. return List;
  34. }

(2)查找按钮事件

  1. Hashtable has = new Hashtable();//实例化哈希表,作用防攻击

  2. //拼sql语句
  3. string sqls = "select *from Users ";
  4. if(TextBox1.Text!="")
  5. {
  6. sqls += " where UserName like @a";
  7. has.Add("@a", "%" + TextBox1.Text.Trim() + "%");//将用户输入的内容放进哈希表,防攻击
  8. count++;
  9. }
  10. if(Drop_nation.SelectedValue !="")
  11. {
  12. if(count !=)//如果上面有查询条件接and
  13. {
  14. sqls += " and Nation=@b";
  15.  
  16. }
  17. else//如果上面没有查询条件接where
  18. {
  19. sqls += " WHERE Nation=@b";
  20.  
  21. count++;
  22. }
  23. string sss=Drop_nation.SelectedValue.ToString();
  24. has.Add("@b",sss );
  25. count++;
  26. }

//Repeater数据绑定
      Repeater1.DataSource = new Usersdata().chas(sqls,has);
      Repeater1.DataBind();
      count = 0;

2、分页
前台

  1. 当前第<asp:Label ID="Label1" runat="server" Text=""></asp:Label>页
  2. 共<asp:Label ID="Label2" runat="server" Text=""></asp:Label>页
  3. <asp:LinkButton ID="LinkButton1" runat="server" >首页</asp:LinkButton>
  4. <asp:LinkButton ID="LinkButton2" runat="server">上一页</asp:LinkButton>
  5. <asp:LinkButton ID="LinkButton3" runat="server">下一页</asp:LinkButton>
  6. <asp:LinkButton ID="LinkButton4" runat="server">末页</asp:LinkButton>
  7. 跳到
  8. <asp:DropDownList ID="DropDownList1" AutoPostBack="true" runat="server"></asp:DropDownList>

后台

(1)数据访问类

  1. //参数1:第几页 参数2:每页显示的个数
    public List<Users> cha(int page,int pagecode)
  2. {
  3. List<Users> List = new List<Users>();
  4. Users u = null;
    //注意:sql语句
  5. com.CommandText = "select top " + pagecode + " *FROM Users where UserName not in (select top " + ((page - ) * pagecode) + " UserName FROM Users)";
  6. con.Open();
  7. SqlDataReader dr = com.ExecuteReader();
  8. if (dr.HasRows)
  9. {
  10. while (dr.Read())
  11. {
  12. u = new Users()
  13. {
  14. UserName = dr[].ToString(),
  15. PassWord = dr[].ToString(),
  16. NickName = dr[].ToString(),
  17. Sex = Convert.ToBoolean(dr[]),
  18. Birthday = Convert.ToDateTime(dr[]),
  19. Phone = dr[].ToString(),
  20. Email = dr[].ToString(),
  21. Natoin = dr[].ToString(),
  22. Area = dr[].ToString(),
  23. };
  24. List.Add(u);
  25. }
  26. }
  27. con.Close();
  28. return List;
  29. }

(2)

  1. //全局变量,每页显示的个数
    int pagecode = ;
  2. //跳到指定页数
  3. void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
  4. {
  5. int a=Convert.ToInt32(DropDownList1.SelectedValue);//获取页数
    //显示数据
  6. Repeater1.DataSource = new Usersdata().cha(a, pagecode);
  7. Repeater1.DataBind();
  8. Label1.Text = a.ToString();//显示当前页
  9. }
  10. //下一页
  11. void LinkButton3_Click(object sender, EventArgs e)
  12. {
  13. Label1.Text = (Convert.ToInt32(Label1.Text) + ).ToString();//显示下一页
  14. if (Convert.ToInt32(Label1.Text) <= MAXPAGE(pagecode))//判断是否小于最大页
  15. {
  16. Repeater1.DataSource = new Usersdata().cha(Convert.ToInt32(Label1.Text), pagecode);
  17. Repeater1.DataBind();
  18. }
  19. else
  20. {
  21. Label1.Text = MAXPAGE(pagecode).ToString();
  22. return;
  23. }
  24. }
  25. //上一页
  26. void LinkButton2_Click(object sender, EventArgs e)
  27. {
  28. Label1.Text =(Convert.ToInt32(Label1.Text) - ).ToString();//显示上一页
  29. if (Convert.ToInt32(Label1.Text)<=)//判断是否大于0页
  30. {
  31. Label1.Text = "";
  32. return;
  33. }
  34. Repeater1.DataSource = new Usersdata().cha(Convert.ToInt32(Label1.Text), pagecode);
  35. Repeater1.DataBind();
  36. }
  37. //末页
  38. void LinkButton4_Click(object sender, EventArgs e)
  39. {
  40. Repeater1.DataSource = new Usersdata().cha(MAXPAGE(pagecode), pagecode);
  41. Repeater1.DataBind();
  42. Label1.Text = MAXPAGE(pagecode).ToString();
  43. }
  44. //首页
  45. void LinkButton1_Click(object sender, EventArgs e)
  46. {
  47. Repeater1.DataSource = new Usersdata().cha(, pagecode);
  48. Repeater1.DataBind();
  49. Label1.Text = "";
  50. }
  51.  
  52. //最大页数
  53. private static int MAXPAGE(int pagecode)
  54. {
  55. double ye = (new Usersdata().cha().Count) / (pagecode *1.0);
  56. int maxye = Convert.ToInt32(Math.Ceiling(ye));
  57. return maxye;
  58. }

3 组合查询和分页结合使用
先查询后分页(拼SQL语句)

数据访问类:同上面的组合查询

  1. string sqls = "select top " + pagecode + " *from Users ";//带分页和查询条件的SQL语句
  2. string sql2 = "select *from Users";//带查询条件的SQL的语句
  3. string sqls1 = "";//查询条件sql语句
  4. if (TextBox1.Text != "")
  5. {
  6. sqls += " where UserName like @a";
  7. sqls1 += " where UserName like @a";
  8. has.Add("@a", "%" + TextBox1.Text.Trim() + "%");
  9. count++;
  10. }
  11. if (Drop_nation.SelectedValue != "")
  12. {
  13. if (count != )
  14. {
  15. sqls += " and Nation=@b";
  16. sqls1 += " and Nation=@b";
  17. }
  18. else
  19. {
  20. sqls += " WHERE Nation=@b";
  21. sqls1 += " WHERE Nation=@b";
  22. count++;
  23. }
  24. string sss = Drop_nation.SelectedValue.ToString();
  25. has.Add("@b", sss);
  26. count++;
  27. }
  28.  
  29. if (count > )
  30. {
  31. sqls += " and UserName not in (select top " + ((Convert.ToInt32(Label1.Text) - ) * pagecode) + " UserName from Users" + sqls1 + ")";
  32. }
  33. else
  34. {
  35. sqls += " where UserName not in (select top " + ((Convert.ToInt32(Label1.Text) - ) * pagecode) + " UserName from Users)";
  36. }
    //用label记录sql语句并隐藏,当上一页、下一页等可以从label中取出用

Label3.Text = sqls;
Label4.Text = sqls1;
Label5.Text = sql2 + sqls1;

  1. //Repeater数据绑定
  2. Repeater1.DataSource = new Usersdata().chas(Label3.Text, has);
  3. Repeater1.DataBind();

webform组合查询和分页的更多相关文章

  1. Web 组合查询加 分页

    使用ADO.NET 数据访问技术制作web端组合查询加分页的功能关键在于查询SQL语句的拼接 以Car 表为例 每页显示3条数据 数据访问类使用查询方法,tsql 查询的连接字符串,查询的参数放到Ha ...

  2. LINQ 小项目【组合查询、分页】

    使用 linq 在网页上对用户信息增删改,组合查询,分页显示 using System; using System.Collections.Generic; using System.Linq; us ...

  3. Linq组合查询与分页组合查询结合

    1.组合查询 <div>姓名:<asp:TextBox ID="T1" runat="server"></asp:TextBox& ...

  4. WebForm组合查询

    封转类 using System; using System.Collections.Generic; using System.Linq; using System.Web; /// <sum ...

  5. LinQ 组合查询与分页

    1.以开头查 public List<Car> Select1(string a){ return con.Car.Where(r => r.Name.StartsWith(a)). ...

  6. LinkQ 组合查询与分页

    1.以开头查 public List<Car> Select1(string a){ return con.Car.Where(r => r.Name.StartsWith(a)). ...

  7. spring boot jpa 多条件组合查询带分页的案例

    spring data jpa 是一个封装了hebernate的dao框架,用于单表操作特别的方便,当然也支持多表,只不过要写sql.对于单表操作,jpake可以通过各种api进行搞定,下面是一个对一 ...

  8. webform 组合查询

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

  9. LINQ 组合查询 和分页查询的使用

    前端代码 <%@ Page Language="C#" AutoEventWireup="true" Debug="true" Cod ...

随机推荐

  1. Python之paramiko基础

    一.Paramiko模块 paramiko是一个自由和开放源码模块使用,实现SSH2协议安全(认证和加密)连接到远程计算机. 二.windwos下安装paramiko模块 #在DOS命令行执行如下命令 ...

  2. RabbitMQ、ActiveMQ和ZeroMQ

    消息中间件的技术选型心得-RabbitMQ.ActiveMQ和ZeroMQ 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs RabbitMQ.Active ...

  3. bootstrap表格内容垂直居中

    td{ vertical-align: middle !important;}

  4. Apache Shiro系列教程之三:Shiro的结构

    Shiro的设计目标是简化应用的安全管理工作.软件通常是以用户为基础设计的.也就是说,我们经常是根据用户是怎样和我们的软件交互的来设计相关的用户接口.比如,你可能会说"如果是已经登录的用户与 ...

  5. php接口和抽象类

    接口关键字:interface,不加class关键字接口里面有成员方法,但是没有函数体.实现接口使用的关键字:implements 不是extends子类必须实现接口的所有方法 使用接口,你可以指定某 ...

  6. StackOverflow程序员推荐的几本书籍

    1. <代码大全>史蒂夫·迈克康奈尔 推荐数:1684 “优秀的编程实践的百科全书,<代码大全>注重个人技术,其中所有东西加起来,就是我们本能所说的“编写整洁的代码”.这本书有 ...

  7. 严格模式use strict

    严格模式主要有以下限制: 变量必须声明后再使用函数的参数不能有同名属性,否则报错不能使用with语句不能对只读属性赋值,否则报错不能使用前缀0表示八进制数,否则报错不能删除不可删除的属性,否则报错不能 ...

  8. 建工财务搬家NC变更|rman各种测试|

    1,使用全备份之后的还原不需要建立表空间. 2,归档日志备份之后,使用delete all input,在backup database plus achivelog之后,会在完成备份之后自动删除归档 ...

  9. 黄聪:PHP解决textarea内容换行存入数据库,如何解析取出不能自动换行

    解决办法: <textarea rows="5" style="height: auto;" ><?php //按行分割,然后每行输出后带上一 ...

  10. 继承自NSObject的不常用又很有用的函数(2)

    函数调用 Objective-C是一门动态语言,一个函数是由一个selector(SEL),和一个implement(IML)组成的.Selector相当于门牌号,而Implement才是真正的住户( ...