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语句

aspnet中通过多条件筛选来显示数据的实现的更多相关文章

  1. Struts1.x 中处理乱码及通过标签显示数据

    1.通过filter解决乱码问题 网页的请求到达之前,先要经过filter的处理: 提取数据出现乱码:request.setCharacterEncoding("UTF-8"); ...

  2. c# winform 中DataGridView绑定List<T> 不能显示数据

    遇到问题 DataGridView绑定List后,List更新后再次绑定不显示数据 datagridview 绑定数据源的时候 用List是不能显示修改内容的..要用binginglist<T& ...

  3. python实例:在列表,字典,集合中,根据条件筛选数据

    1. 从列表中过滤掉 负数 from random import randint # 随机生成列表 data = [randint(-10, 10) for _ in range(10)] print ...

  4. 帝国CMS模板中的多条件筛选方法

    需求:点击某一条目,调出与该条目关键词相关的类似词条数据 要点: 1.帝国CMS灵动标签使用   [e:loop= 2.专题关键词筛选  enewszt 3.SQL语句筛选   select * fr ...

  5. c# 在datagridview中添加comboboxcolumn 绑定数据库读取显示数据

    datagridview中的comboboxcolumn 从绑定的数据库中读取显示时,只需要注意一点,就是sql语句加个 CStr() 字符串转换函数即可,如下: SELECT CStr(XXX) a ...

  6. Django工程中使用echarts怎么循环遍历显示数据

    前言: 后面要开发测试管理平台,需要用到数据可视化,所以研究了一下 先看下最后的图吧,单击最上方的按钮可以控制柱状图显隐 views.py # -*- coding: utf-8 -*- from _ ...

  7. mvc中ViewBag返回数组如何循环显示数据

    直接在for循环里面定义出viewbag @for (int i = 0; i < ViewBag.permission.Count; i++) { var permission = ViewB ...

  8. SAP ALV中同一列的不同行显示不同的小数位,并能够总计,小计

    物料数量字段,根据物料类型的不同,来显示不同的小数位:要求有点苛刻: 首先,要能够总计和小计的话,这一列的字段类型必须是数值类型. 这样的话,就不能通过截取的方式改变不同行的小数位. 以下是两种思路: ...

  9. c#中如何不通过后台直接用js筛选gridview中的数据条件筛选查询?

    js: //条件筛选 var showstate = true; function imagechange() { if (showstate) { $('#_toggle').hide(500, f ...

随机推荐

  1. 201521123103 《Java程序设计》第三周学习总结

    一.本周学习总结 二.书面作业 1.代码阅读 public class Test1 { private int i = 1;//这行不能修改 private static int j = 2; pub ...

  2. 201521123038 《Java程序设计》 第一周学习总结

    201521123038 <Java程序设计> 第一周学习总结 1.本章学习总结 本周已掌握Java配置,初步认识Java运行软件和基本语法. Java语言语法和C语言基本类似,部分不同. ...

  3. 201521123093 java 第十四周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多数据库相关内容. MySQL中的库操作和表操作 库操作: 显示所有数据库: show databases; 创建数据库: crea ...

  4. 201521123034 《Java程序设计》第9周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 2. 书面作业 本次PTA作业题集异常 常用异常 题目5-1 1.1 截图你的提交结果(出现学号) 1.2 自己以前 ...

  5. 201521123049 《JAVA程序设计》 第12周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 书面作业 将Student对象(属性:int id, String name,int age,doubl ...

  6. PHP连接数据_insert_id介绍

    对于自增长的主键列不好取值的情况,php提供了一个变量来取值,insert_id $db = new MySQLi("localhost","root",&qu ...

  7. Java: private、protected、public和default的区别

    public: 具有最大的访问权限,可以访问任何一个在classpath下的类.接口.异常等.它往往用于对外的情况,也就是对象或类对外的一种接口的形式. protected: 主要的作用就是用来保护子 ...

  8. 多线程面试题系列(14):读者写者问题继 读写锁SRWLock

    在第十一篇文章中我们使用事件和一个记录读者个数的变量来解决读者写者问题.问题虽然得到了解决,但代码有点复杂.本篇将介绍一种新方法--读写锁SRWLock来解决这一问题.读写锁在对资源进行保护的同时,还 ...

  9. 软件测试的cookie测试

    1.什么是cooike测试 Cookie是指网站用于辨别身份,进行会话(session)跟踪而存储在客户端的数据.它是有服务器产生并发送给客户端的.其用途是提供一个方便的功能以简化用户输入,节省访问页 ...

  10. 《MySQL必知必会》[01] 基本查询

    <MySQL必知必会>(点击查看详情) 1.写在前面的话 这本书是一本MySQL的经典入门书籍,小小的一本,也受到众多网友推荐.之前自己学习的时候是啃的清华大学出版社的计算机系列教材< ...