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 = ...
随机推荐
- highchart导出图片
http://www.cnblogs.com/jasondan/p/3504120.html 项目中需求导出报表为图片存到Excel中去,或供其它页面调用. 开始存到截屏,但由于用户电脑分辨率不一样, ...
- jQuery源码分析系列(34) : Ajax - 预处理jsonp
上一章大概讲了前置过滤器和请求分发器的作用,这一章主要是具体分析每种对应的处理方式 $.ajax()调用不同类型的响应,被传递到成功处理函数之前,会经过不同种类的预处理(prefilters). 预处 ...
- JSON和JS对象之间的互转
1. jQuery插件支持的转换方式 $.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以将json字符串转换成json对象 2. 浏览器支持的 ...
- ModelDataExchange - Import
ModelDataExchange - Import eryar@163.com Abstract. The ModelDataExchange import utility enables the ...
- Easyui 让DataGrid适应浏览器宽度
DataGrid有100%宽度的设置,但是有时不是很让人满意,比如你你放大或者拉放你的浏览器,那么DataGrid只维持第一次加载的宽高,非常难看 $('#List').datagrid({ url: ...
- 【开源】OSharp框架解说系列(6.1):日志系统设计
OSharp是什么? OSharp是个快速开发框架,但不是一个大而全的包罗万象的框架,严格的说,OSharp中什么都没有实现.与其他大而全的框架最大的不同点,就是OSharp只做抽象封装,不做实现.依 ...
- Android播放gif动画,增加屏幕掉金币效果
前言:播放gif的版本有很多,我这边使用Android自带的Movie类播放gif动画,也是在别人的基础上进行修改.有同样需求的朋友可以参考我的demo. 1.效果图如下: 2.部分主要代码 Main ...
- SubSonic3.0.0.4.3源码包与调用Dll
版本修改历史 3.0.0.4.3版修复了下面问题: 修正多表关联查询时,使用左关联和右关联出错问题修正DbDataProvider.cs类的ToEnumerable函数打开数据库链接后没有关闭的问题添 ...
- 3、Redis 基础
Redis的五大数据类型 String(字符串) string是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value.string类型是二进制安全的.意 ...
- iOS开发多线程篇—多线程简单介绍
iOS开发多线程篇—多线程简单介绍 一.进程和线程 1.什么是进程 进程是指在系统中正在运行的一个应用程序 每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内 比如同时打开QQ.Xcod ...