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

posted on 2013-06-24 11:51  dianyitongxiao  阅读(2107)  评论(0编辑  收藏  举报