ASP.NET实现列表页连接查询 拼接sql语句 绑定grivdView
ASP.NET实现列表页连接查询 拼接sql语句
如图效果:
基本需求:1、当页面第一次加载的时候默认查询一个月时间(或者说是登陆者所属权限的所有数据)的数据绑定到gridView
2、添加查询条件时连接查询实现绑定
3、点击清空所有条件为空,查询所有数据
4、gridView实现分页
gridview分页
设定属性AllowPaging="True"就会默认分页,在做后台翻页的显示功能就行
前台按钮 <tr>
<td style="border-top: #000000 1px solid; border-bottom: #000000 1px solid; font-size:16px;">
<asp:ImageButton ID="BtnFirst" runat="server" CommandName="First" ImageUrl="../images/Button/First.jpg"
OnClick="PagerButtonClick" />
<asp:ImageButton ID="BtnPre" runat="server" CommandName="Pre" ImageUrl="../images/Button/Pre.jpg"
OnClick="PagerButtonClick" />
<asp:ImageButton ID="BtnNext" runat="server" CommandName="Next" ImageUrl="../images/Button/Next.jpg"
OnClick="PagerButtonClick" />
<asp:ImageButton ID="BtnLast" runat="server" CommandName="Last" ImageUrl="../images/Button/Last.jpg"
OnClick="PagerButtonClick" />
第<asp:Label ID="LabCurrentPage" runat="server" Text="Label"></asp:Label>页
共<asp:Label ID="LabPageSum" runat="server" Text="Label"></asp:Label>页
<asp:TextBox ID="TxtPageSize" runat="server" CssClass="TextBoxCssUnder2" Height="20px"
Width="35px">15</asp:TextBox>
行每页 转到第<asp:TextBox ID="GoPage" runat="server" CssClass="TextBoxCssUnder2"
Height="20px" Width="33px"></asp:TextBox>
页
<asp:ImageButton ID="ButtonGo" runat="server" OnClientClick="javascript:return CheckValuePiece();"
ImageUrl="../images/Button/Jump.jpg" OnClick="ButtonGo_Click" />
</td>
<td align="right" valign="middle" style="border-top: #000000 1px solid; border-bottom: #000000 1px solid;">
<asp:ImageButton ID="ibtnAdd1" runat="server" ImageUrl="../images/Button/BtnAdd.jpg"
ImageAlign="AbsMiddle" OnClick="ibtnAdd1_Click" Height="17px" />
<asp:ImageButton ID="ibtnDel1" runat="server" OnClientClick="javascript:return CheckDel();"
ImageUrl="../images/Button/BtnDel.jpg" ImageAlign="AbsMiddle" OnClick="ibtnDel1_Click" />
</td>
</tr>
后台分页显示功能:
#region 分页方法
protected void ButtonGo_Click(object sender, ImageClickEventArgs e)
{
try
{
if (GoPage.Text.Trim().ToString() == "")
{
Response.Write("<script language='javascript'>alert('页码不可以为空!');</script>");
}
else if (GoPage.Text.Trim().ToString() == "0" || Convert.ToInt32(GoPage.Text.Trim().ToString()) > GVData.PageCount)
{
Response.Write("<script language='javascript'>alert('页码不是一个有效值!');</script>");
}
else if (GoPage.Text.Trim() != "")
{
int PageI = Int32.Parse(GoPage.Text.Trim()) - 1;
if (PageI >= 0 && PageI < (GVData.PageCount))
{
GVData.PageIndex = PageI;
}
}
if (TxtPageSize.Text.Trim().ToString() == "")
{
Response.Write("<script language='javascript'>alert('每页显示行数不可以为空!');</script>");
}
else if (TxtPageSize.Text.Trim().ToString() == "0")
{
Response.Write("<script language='javascript'>alert('每页显示行数不是一个有效值!');</script>");
}
else if (TxtPageSize.Text.Trim() != "")
{
try
{
int MyPageSize = int.Parse(TxtPageSize.Text.ToString().Trim());
this.GVData.PageSize = MyPageSize;
}
catch
{
Response.Write("<script language='javascript'>alert('每页显示行数不是一个有效值!');</script>");
}
} }
catch
{
}
}
数据查询绑定:
查询字符串拼接
string sql = "", sqlConditions = "", errorMsg = "";
if (title !="")///不能用null如果用null找不到结果会提示错误
{
sqlConditions += "and title like'%"+title+"%'";
}
if (place != "")
{
sqlConditions += "and place like'%" + place + "%'";
}
if (applyer != "")
{
sqlConditions += "and applyer ='" + applyer + "'";
}
if (personList != "")
{
sqlConditions += "and PersonList like'%" + personList + "%'";
}
sql = "select * from table where " + sqlConditions + "order by TimeFr desc,TimeTo desc ,TimeTo desc,place desc";
字符串拼接需注意如果说是单表查询如果都以上面的格式拼接则会出现sql语句查询错误,找不到数据 错误"where and title……"
处理方法1
select * from table where 1=1 " + sqlConditions + "就会得到所查结果 查询结果绑定:但是这样不科学。
处理方法2
利用字符串处理函数去掉开始的“and”,查询条件都为空时默认查询所有数据。
if (sqlConditions.StartsWith("and"))
{
sqlConditions = sqlConditions.Substring(3);
sql = "select * from T_Dispatch where " + sqlConditions + "order by TimeFr desc,TimeTo desc ,TimeTo desc,place desc";
}
else
{
if (sqlConditions == "")
{
sql = "select * from T_Dispatch order by TimeFr desc,TimeTo desc ,TimeTo desc,place desc";
}
}
DataSet ds = ZWL.DBUtility.DbHelperSQL.SelectDataSet(sql, "", ref errorMsg);
GVData.DataSource = ds.Tables[0];
GVData.DataBind();
LabPageSum.Text = Convert.ToString(GVData.PageCount);
LabCurrentPage.Text = Convert.ToString(((int)GVData.PageIndex + 1));
this.GoPage.Text = LabCurrentPage.Text.ToString();
处理方法3
当然是加上限制字段ok,若果谁有更好的方法希望交流学习
ASP.NET实现列表页连接查询 拼接sql语句 绑定grivdView的更多相关文章
- 查询拼接SQL语句,多条件模糊查询
多条件查询,使用StringBuilder拼接SQL语句,效果如下: 当点击按钮时代码如下: private void button1_Click(object sender, EventArgs e ...
- Atitit.列表页and查询条件的最佳实践(1)------设定搜索条件and提交查询and返回json数据
Atitit.列表页and查询条件的最佳实践(1)------设置查询条件and提交查询and返回json数据 1. 1. 配置条件字段@Conditional 1 1 2. 2. 配置条件字段显示类 ...
- MySql实现分页查询的SQL,mysql实现分页查询的sql语句 (转)
http://blog.csdn.net/sxdtzhaoxinguo/article/details/51481430 摘要:MySQL数据库实现分页查询的SQL语句写法! 一:分页需求: 客户端通 ...
- oracle数据库查询日期sql语句(范例)、向已经建好的表格中添加一列属性并向该列添加数值、删除某一列的数据(一整列)
先列上我的数据库表格: c_date(Date格式) date_type(String格式) 2011-01-01 0 2012-03-07 ...
- 10.1(java学习笔记)JDBC基本操作(连接,执行SQL语句,获取结果集)
一.JDBC JDBC的全称是java database connection java数据库连接. 在java中需要对数据库进行一系列的操作,这时就需要使用JDBC. sun公司制定了关于数据库操作 ...
- MySql实现分页查询的SQL,mysql实现分页查询的sql语句(转)
http://blog.csdn.net/sxdtzhaoxinguo/article/details/51481430 摘要:MySQL数据库实现分页查询的SQL语句写法! 一:分页需求: 客户端通 ...
- java动态拼接sql语句并且执行时给sql语句的参数赋值
问题 在这里举一个例子,比如我要做一个多条件模糊查询,用户输入的时候有可能输入一个条件,也有可能输入两个条件,这时执行查询的sql语句就不确定了,但可以用动态拼接sql语句来解决这个问题. 解决方法 ...
- StringBuilder 拼接sql语句比较快
StringBuilder 拼接sql语句比较快StringBuilder strBuilder = new StringBuilder();strSql += "insert into t ...
- mysql按年度、季度、月度、周、日统计查询的sql语句
本文介绍一些mysql中用于查询的sql语句,包括按年度.季度.月度.周.日统计查询等,有需要的朋友,可以参考下. 一.年度查询 查询 本年度的数据 SELECT * FROM blog_arti ...
随机推荐
- 从一个实例,看new FunctionName()的内部机制
下面的代码: function Dog(name) { this.name = name; Dog.prototype = { shout: function() { alert("I am ...
- 滴滴专车司机苹果手机ios客户端可以下载了
申请过滴滴专车司机的朋友都知道,滴滴专车就是滴滴打车的司机端,但是只有安卓的,一直没有苹果IOS的版本,很多申请通过审核的车主恼于没有IOS版本而暂无法使用滴滴专车司机客户端,也就意味着不能上线接单. ...
- 畅通工程续(dijskra+SPFA)
畅通工程续 Time Limit : 3000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Submiss ...
- 关于 ls 命令的一个小小的缺陷
linux 的 ls : ls后边加上要显示的路径时:比方 ls /tmp 它会打印一边 /tmp 下的信息 当ls后边跟上多个同样路径的名字是,它会打印多次同样的信息 比方 ls /tmp /tmp ...
- C#之多线程编程
一.进程与线程 进程(Process)是对一段静态指令序列(程序)的动态执行过程,是系统进行资源分配和调度的一个基本单位.与进程相关的信息包括进程的用户标识,正在执行的已经编译好的程序,进程程序和数据 ...
- 解决windows下Eclipse连接远程Hadoop报错
Exception in thread "main" java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.N ...
- 构造HTTP请求Header实现"伪造来源IP"
构造 HTTP请求 Header 实现“伪造来源 IP ” 在阅读本文前,大家要有一个概念,在实现正常的TCP/IP 双方通信情况下,是无法伪造来源 IP 的,也就是说,在 TCP/IP 协议中,可以 ...
- html5的自定义data-*属性与jquery的data()方法的使用
人们总喜欢往HTML标签上添加自定义属性来存储和操作数据.但这样做的问题是,你不知道将来会不会有其它脚本把你的自定义属性给重置掉,此外,你这样做也会导致html语法上不符合Html规范,以及一些其它副 ...
- Android IT资讯网络阅读器应用源码
这个是Android IT资讯网络阅读器应用,也是一款通过jsoup解析Html获取内容的网络阅读器,和前面的其实是类似的,也是大学时期闲暇完成,对照CSDN的Web页面元素设计进行解析提取内容,核心 ...
- 高精度 java的一些题
poj 1001 Exponentiation import java.util.*; import java.math.*; public class Main { public static vo ...