Linq的分页与组合查询的配合使用
1.首先使用Linq连接数据库,并扩展属性
public partial class User
{
public string SexStr
{
get
{
string end = "<暂无>";
if (this._Sex != null)
{
end = Convert.ToBoolean(this._Sex) ? "男" : "女";
}
return end;
}
}
public bool SexStr1
{
get
{
bool end=false; if (this._Sex != null)
{
end = Convert.ToBoolean(this._Sex) ;
}
return end;
}
}
public string NationName
{
get
{
return this.Nation1.NationName;
}
}
public string BirStr
{
get
{
string end = "<暂无>";
if(this._Birthday!=null)
{
end = Convert.ToDateTime(this._Birthday).ToString("yyyy年MM月dd日");
}
return end;
}
}
public int Age
{
get
{
int end=;
if (this._Birthday != null)
{
int y = DateTime.Now.Year;
int a = Convert.ToDateTime(this._Birthday).Year;
end = y-a;
}
return end;
}
}
}
扩展属性
2.HTML代码
<form id="form1" runat="server">
<div id="select">
用户名:<asp:TextBox ID="TextBox1" runat="server" Width=""></asp:TextBox>
性别:<asp:TextBox ID="tb_sex" runat="server" Width="60px"></asp:TextBox> 
年龄:<asp:DropDownList ID="DropDownList3" runat="server">
<asp:ListItem Selected="True" Value="<=">>=</asp:ListItem>
<asp:ListItem Value=">="><=</asp:ListItem>
</asp:DropDownList><asp:TextBox ID="tb_age" runat="server" Width="60px"></asp:TextBox>
 <asp:Button ID="Button2" CssClass="Button" runat="server" Text="查询" />  <a href="Insert.aspx" target="_blank" class="link">添加</a></div> <asp:Repeater ID="Repeater1" runat="server">
<HeaderTemplate >
<table style="width: 100%; background-color: #4cff00; text-align: center;">
<tr style="color:#ff6a00;">
<td>用户名</td>
<td>密码</td>
<td>昵称</td>
<td>性别</td>
<td>生日</td>
<td>年龄</td>
<td>民族</td>
<td>操作</td>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr style="background-color:#0ff;" class="tr_item">
<td><%#Eval("UserName") %></td>
<td><%#Eval("PassWord") %></td>
<td><%#Eval("NickName") %></td>
<td><%#Eval("SexStr") %></td>
<td><%#Eval("Birthday","{0:yyyy年MM月dd日}") %></td>
<td><%#Eval("Age") %></td>
<td><%#Eval("NationName") %></td>
<td><a href="update.aspx?un=<%#Eval("UserName") %>" target="_blank" class="link">修改</a>
<a id="lian" href="delete.aspx?un=<%#Eval("UserName") %>" onclick="return del()" class="link">删除</a></td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
//隐藏域放用户输入的多条件查询内容
<asp:HiddenField ID="HiddenField1" runat="server" />
<asp:HiddenField ID="HiddenField2" runat="server" />
<asp:HiddenField ID="HiddenField3" runat="server" />
<div id="aa">当前第 <asp:Label ID="Label2" runat="server" Text="Label"></asp:Label> 页  共 <asp:Label ID="Label3" runat="server" Text="Label"></asp:Label> 页
<asp:Button ID="btn_first" runat="server" CssClass="ye" Text="首页" /> <asp:Button ID="btn_prev" runat="server" Text="上一页" CssClass="ye" /> <asp:Button ID="btn_next" runat="server" Text="下一页" CssClass="ye" /> <asp:Button ID="btn_end" runat="server" Text="末页" CssClass="ye"/>
<asp:DropDownList ID="DropDownList2" runat="server" AutoPostBack="True"></asp:DropDownList></div>
</form>
3、C#功能实现
private IEnumerable<global::User> sel(WebDataContext con)
{
var All = con.User.AsEnumerable();
if (HiddenField1.Value.Length > )
{
var namelist = con.User.Where(r => r.UserName.Contains(TextBox1.Text.Trim())); All = All.Intersect(namelist);
} if (HiddenField2.Value == "男" || HiddenField2.Value == "女")
{
var sexlist = con.User.Where(r => Convert.ToBoolean(r.Sex) == (tb_sex.Text.Trim() == "男" ? true : false)); All = All.Intersect(sexlist);
} if (HiddenField3.Value.Length > )
{
int nowyear = DateTime.Now.Year;
try
{
int age = Convert.ToInt32(tb_age.Text.Trim());
int g = nowyear - age;
DateTime d = Convert.ToDateTime(g.ToString() + "-1-1");
if (DropDownList3.SelectedValue == ">=")
{
var agelist = con.User.Where(r => Convert.ToDateTime(r.Birthday) >= d);
All = All.Intersect(agelist); }
else
{
DateTime dd = Convert.ToDateTime(g.ToString() + "-12-31");
var agelist = con.User.Where(r => Convert.ToDateTime(r.Birthday) <= dd);
All = All.Intersect(agelist); }
}
catch
{
}
}
return All;
}
查询方法
int Pagecount = ;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
using (WebDataContext con = new WebDataContext())
{
var All = sel(con);
Repeater1.DataSource = All.Take(Pagecount).ToList();
Repeater1.DataBind();
}
Label2.Text = "";//当前页
Label3.Text = MaxPageNumber().ToString();
for (int i = ; i <= MaxPageNumber();i++ )
{
DropDownList2.Items.Add(new ListItem(i.ToString(), i.ToString()));
}
} }
初加载
void Button2_Click(object sender, EventArgs e)//查询按钮
{
HiddenField1.Value = TextBox1.Text.Trim();
HiddenField2.Value = tb_sex.Text.Trim();
HiddenField3.Value = tb_age.Text.Trim();
using (WebDataContext con = new WebDataContext())
{
var All = sel(con);
Repeater1.DataSource = All.Take(Pagecount).ToList();
Repeater1.DataBind();
Label2.Text = "";
Label3.Text = MaxPageNumber().ToString();
DropDownList2.Items.Clear();
for (int i = ; i <= MaxPageNumber(); i++)
{
DropDownList2.Items.Add(new ListItem(i.ToString(), i.ToString()));
}
}
}
查询按钮点击
void DropDownList2_SelectedIndexChanged(object sender, EventArgs e)
{
using (WebDataContext con = new WebDataContext())
{
var All = sel(con);
Repeater1.DataSource = All.Skip(Pagecount * (Convert.ToInt32(DropDownList2.SelectedValue) - )).Take(Pagecount).ToList();
Repeater1.DataBind();
}
Label2.Text =DropDownList2.SelectedValue; }
快捷跳转
void btn_first_Click(object sender, EventArgs e)
{
using (WebDataContext con = new WebDataContext())
{
var All = sel(con);
Repeater1.DataSource = All.Take(Pagecount).ToList();
Repeater1.DataBind();
}
Label2.Text ="";
DropDownList2.SelectedValue = "";
}
首页
void btn_end_Click(object sender, EventArgs e)
{
using (WebDataContext con = new WebDataContext())
{
var All = sel(con);
Repeater1.DataSource = All.Skip(Pagecount * (Convert.ToInt32(Label3.Text) - )).Take(Pagecount).ToList();
Repeater1.DataBind();
}
Label2.Text = Label3.Text;
DropDownList2.SelectedValue = Label3.Text;
}
末页
void btn_prev_Click(object sender, EventArgs e)
{
int NowNumber = Convert.ToInt32(Label2.Text) -;
if (NowNumber <)
{
return;
}
using (WebDataContext con = new WebDataContext())
{
var All = sel(con);
Repeater1.DataSource = All.Skip(Pagecount * (NowNumber - )).Take(Pagecount).ToList();
Repeater1.DataBind();
} Label2.Text = NowNumber.ToString();
DropDownList2.SelectedValue = NowNumber.ToString();
}
上一页
void btn_next_Click(object sender, EventArgs e)
{
int NowNumber = Convert.ToInt32(Label2.Text) + ;
if (NowNumber > Convert.ToInt32(Label3.Text))
{
return;
}
using (WebDataContext con = new WebDataContext())
{
var All = sel(con);
Repeater1.DataSource = All.Skip(Pagecount * (NowNumber - )).Take(Pagecount).ToList();
Repeater1.DataBind();
} Label2.Text = NowNumber.ToString();
DropDownList2.SelectedValue = NowNumber.ToString(); }
下一页
public int MaxPageNumber()
{
using (WebDataContext con = new WebDataContext())
{
var All = sel(con);
double nu = All.ToList().Count / (Pagecount * 1.0);
int num = Convert.ToInt32(Math.Ceiling(nu));
return num;
}
}
计算总页数
Linq的分页与组合查询的配合使用的更多相关文章
- ajax分页与组合查询配合使用
使用纯HTML页与js.ajax.Linq实现分页与组合查询的配合使用 <body> <div id="top"><input type=" ...
- Webform(Linq高级查、分页、组合查询)
一.linq高级查 1.模糊查(包含) 1 public List<User> Select(string name) 2 { 3 return con.User.Where(r => ...
- LINQ 小项目【组合查询、分页】
使用 linq 在网页上对用户信息增删改,组合查询,分页显示 using System; using System.Collections.Generic; using System.Linq; us ...
- Webform(分页与组合查询配合使用)
1.封装实体类 2.写查询方法 //SubjectData类 public List<Subject> Select(string name) { List<Subject> ...
- webform 分页、组合查询综合使用
界面: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx ...
- Webform(分页、组合查询)
一.分页 1.写查询方法: public List<Student> Select(int PageCount, int PageNumber) {//PageCount为每页显示条数,P ...
- WebForm 分页与组合查询
1.封装实体类 2.写查询方法 //SubjectData类 public List<Subject> Select(string name) { List<Subject> ...
- WebForm 分页、组合查询--2017年1月5日
sql = "select * from Commodity"; hs = new Hashtable(); if (txt_name.Text.Trim() != "& ...
- linq分页组合查询
一.linq高级查 1.模糊查(字符串包含) 1 public List<User> Select(string name) 2 { 3 return con.User.Where(r = ...
随机推荐
- 《像计算机科学家一样思考Java》—— 读后总结
本书属于入门级的Java书籍,与其他的向编程思想.核心技术不同的是,这本书不是按部就班的讲解java变成知识,而是随着语言的深入慢慢增加知识点. 这本书以一个语言开发者的角度,深入浅出的讲解了Java ...
- iOS-Xcode使用技巧
一.快捷键的使用 经常用到的快捷键如下: 新建 shift + cmd + n 新建项目 cmd + n 新建文件 视图 option + cmd + 回车 打开助理编 ...
- Java 的设计模式之一装饰者模式
刚开始接触装饰者的设计模式,感觉挺难理解的,不够后来花了一个晚上的时间,终于有头绪了 装饰者设计模式:如果想对已经存在的对象进行装饰,那么就定义一个类,在类中对已经有的对象进行功能的增强或添加另外的行 ...
- Kafka随笔一
一.KafKa所涉及到的名词概念: 1. Topic:用于划分Message的逻辑概念,一个Topic可以分布在多个Broker上. 2. Partition:是Kafka中横向扩展和一切 ...
- 日志log
public class LoggerHelper { private static Queue<string> qMsg = null; private static string lo ...
- SQL Server中的高可用性(3)----复制
在本系列文章的前两篇对高可用性的意义和单实例下的高可用性做了阐述.但是当随着数据量的增长,以及对RTO和RPO要求的严格,单实例已经无法满足HA/DR方面的要求,因此需要做多实例的高可用性.本 ...
- 【WP8.1开发】RenderTargetBitmap类的特殊用途
相信,耍过WPF的人都知道RenderTargetBitmap这个玩意儿,这家伙比较有意思,它可以将用户界面上呈现的东西写入到内存的位图对象,从而开发者可以在应用程序中使用它,或者将其保存为图像文件. ...
- Window7下安装Ubuntu 14.04 64bit
本文章主要讲解如何在Windows7操作系统中硬盘安装Ubuntu 14.04 64bit: 1.准备文件 1.ubuntu-14.04.4-desktop-amd64.iso 2.EasyBCD.e ...
- 深入理解javascript对象系列第二篇——属性操作
× 目录 [1]查询 [2]设置 [3]删除[4]继承 前面的话 对于对象来说,属性操作是绕不开的话题.类似于“增删改查”的基本操作,属性操作分为属性查询.属性设置.属性删除,还包括属性继承.本文是对 ...
- 窥探Swift之协议(Protocol)和委托代理(Delegate)回调的使用
协议与委托代理回调在之前的博客中也是经常提到和用到的在<Objective-C中的委托(代理)模式>和<iOS开发之窥探UICollectionViewController(四) - ...