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" />
                    &nbsp;第<asp:Label ID="LabCurrentPage" runat="server" Text="Label"></asp:Label>页&nbsp;
                    共<asp:Label ID="LabPageSum" runat="server" Text="Label"></asp:Label>页&nbsp;
                    <asp:TextBox ID="TxtPageSize" runat="server" CssClass="TextBoxCssUnder2" Height="20px"
                        Width="35px">15</asp:TextBox>
                    行每页 &nbsp; 转到第<asp:TextBox ID="GoPage" runat="server" CssClass="TextBoxCssUnder2"
                        Height="20px" Width="33px"></asp:TextBox>
                    页&nbsp;
                    <asp:ImageButton ID="ButtonGo" runat="server" OnClientClick="javascript:return CheckValuePiece();"
                        ImageUrl="../images/Button/Jump.jpg" OnClick="ButtonGo_Click" />
                    &nbsp;&nbsp;
                </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" />&nbsp;
                    <asp:ImageButton ID="ibtnDel1" runat="server" OnClientClick="javascript:return CheckDel();"
                        ImageUrl="../images/Button/BtnDel.jpg" ImageAlign="AbsMiddle" OnClick="ibtnDel1_Click" />&nbsp;
                </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,若果谁有更好的方法希望交流学习

最新文章

  1. linux中kvm的安装及快照管理
  2. 集成一体化的移动POS开单扫描解决方案--&quot;移动开单掌上POS&quot;。它集后台管理软件
  3. idea 新建web项目
  4. H5移动前端性能优化
  5. Crystal Reports 2008(水晶报表) 启动时检查更新
  6. 使用jquery的小记
  7. SQL语句技巧(上个样式太差了)
  8. 像素,分辨率,PPI(像素密度),BPP 扫盲
  9. SharePoint 2013 工作流设计之Designer 使用“可视化视图
  10. 关于C++的const对象
  11. 每周.NET前沿技术文章摘要(2017-05-24)
  12. 强连通分量Kosaraju
  13. UnicodeDecodeError: &#39;gbk&#39; codec can&#39;t decode byte 0xae in position 199: illegal multibyte sequence
  14. 【Python3练习题 025】 一个数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同
  15. 【dfs】LETTERS
  16. Extending Conductor
  17. 找到SVN版本机上项目的地址
  18. hdu 1698 线段树 成段更新
  19. springcloud 笔记-服务注册中心
  20. Vue2.0+Webpack项目环境构建到发布

热门文章

  1. Delphi检测网络连接状态
  2. 设置高级的Logstash 管道
  3. 2014第13周四Webservice概念问题记
  4. linux 学习之九、Linux 磁盘与文件系统管理(3)
  5. wormhole提升hivereader读取速度方案
  6. POJ2553-The Bottom of a Graph
  7. cocoa pods出现的错误
  8. 根据自己的需要适度使用Web开发框架
  9. EC读书笔记系列之13:条款25 考虑写出一个不抛异常的swap函数
  10. Qt 圆角矩形+鼠标左键拖动窗口