zoukankan      html  css  js  c++  java
  • aspnet中通过多条件筛选来显示数据的实现

    UI图:

    功能实现:

      1.勾选住哪个选项之后,就加入了筛选。支持姓名的模糊查询。

      2.对筛选出来的数据可以直接修改,并更新回数据库。

    说明:显示的数据来自T_User表。数据显示控件使用的是 ListView,数据源控件使用的是 ObjectDataSource,已有T_User表的数据集 。

    思路:ListView使用数据源ObjectDataSource,ObjectDataSource指定使用DS_User数据集,Select方法使用默认的方法。这样,刚进入界面,显示所有的用户。

    怎么实现筛选呢方法1:有三个条件,就有9中可能情况,在DS_User数据集中定义9个方法。通过判断,指定ObjectDataSource使用哪个Select方法就可以了。

    方法2当点击查询后,根据筛选生成特定的Select语句。然后修改ObjectDataSource使用的Select方法就可以了。

    方法3:不使用ObjectDataSource,根据筛选生成特定的Select语句,自己通过SqlHelper执行,将结果显示在GridView中。

    分析:方法1过于繁琐,当只需要定义1、2个方法时,还是可以使用的。方法3:不能对筛选出的结果数据进行修改,比如说更新了。因此,当只是显示数据的时候,可以使用。

    而要使用方法2:就要解决这个问题:

        如何通过代码来设置ObjectDataSource使用数据集中的哪个Select方法
        如何通过代码来设置数据集中的Select方法的Select语句

    实现代码:

    定义一个WherePart属性,来接收Where部分的语句。并设置MySelect方法。

      在数据集DS_User界面右击选择【查看代码】添加如下代码

    namespace InvoicingManagement.DAL.DS_UserTableAdapters
    {
        public partial class T_UserTableAdapter
        {
            public static string WherePart { get; set; }
    
            public virtual DS_User.T_UserDataTable MySelect() {
    
                SqlCommand cmd = this.Connection.CreateCommand();
                cmd.CommandText = "SELECT UserId, FWorkId, FName, FPassword, LevelId FROM dbo.T_User " + WherePart;
                cmd.CommandType = System.Data.CommandType.Text;
    
                this.Adapter.SelectCommand = cmd;
                DS_User.T_UserDataTable dataTable = new DS_User.T_UserDataTable();
                this.Adapter.Fill(dataTable);
                return dataTable;
            }        
        }
    }

    在查询按钮中的

           //根据筛选得到Where部分的字符串
           List<string> list = new List<string>(); list.Add(" LevelId>2 ");// 不能检索到【管理员】以上权限的人员,这也解决了【“ddl_level”有一个无效 SelectedValue,因为它不在项目列表中。】的问题 if (chkWorkId.Checked) { list.Add(string.Format(" FWorkId = {0} ", txtWorkId.Text.Trim())); } if (chkName.Checked) { list.Add(string.Format(" FName like '%{0}%' ", txtName.Text.Trim())); } if (chkLevel.Checked) { list.Add(string.Format(" LevelId = {0} ", ddl_level.SelectedValue)); }          string s = " where " + string.Join("and", list.ToArray());
          
           //设置Select语句
    T_UserTableAdapter.WherePart
    = s;        //指定使用哪个方法 ods_User.SelectMethod = "MySelect"; listview_User.DataBind();

     在DataSet中添加自定义方法与属性

    为数据集DataSet的属性复制为数据集指定使用哪个Select语句

  • 相关阅读:
    解析form表单数据
    linux下开启https
    Jquery UI的日历控件datepicker限制日期(转)
    [MicroPython]TPYBoardv102超全DIY案例一览
    [MicroPython]TurnipBit开发板DIY自动浇水系统
    [MicroPython]TurniBit开发板旋转按钮控制脱机摆动
    [MicroPython]TurniBit开发板DIY自动窗帘模拟系统
    [Micropython]TPYBoard v102 DIY照相机
    python的各种推导式(列表推导式、字典推导式、集合推导式)
    管理 python logging 日志使用
  • 原文地址:https://www.cnblogs.com/dianyitongxiao/p/3152197.html
Copyright © 2011-2022 走看看