这个问题是要实现:在同一个ListView中实现数据的显示和查询。就是第一次加载页面时ListView加载所有数据,然后用户可以在页面中进行查询动作,结果仍然在ListView中显示出来,并且删除等操作绑定依然存在。
第一步,按照普通的绑定操作将ListView与DataSource绑定好,然后DataSource先设置成DAL层中用来查询所有数据的方法,在这里我的方法是 ListAll() 。
第二步,在查询按钮的Click事件中,我们使用如下代码进行查询方法的改变:
protected void Button1_Click(object sender, EventArgs e) { //获取用户输入的查询条件 string Key = TextBox1.Text; //清空查询方法的参数集合(集合中不能有没用的参数) ObjectDataSource1.SelectParameters.Clear(); //检查用户是否输入了查询条件 if (Key.Trim().Length > 0) { //若输入了查询条件,则使用带参数的查询方法 ObjectDataSource1.SelectMethod = "ListByName"; //新建查询的参数,构造函数依次要传入:参数名、数据类型、参数值 Parameter param = new Parameter("PosName", System.Data.DbType.String, Key); //将参数添加到数据源的查询参数集合中 ObjectDataSource1.SelectParameters.Add(param); } else { //若没有输入查询条件,则仍然使用查询所有的方法 ObjectDataSource1.SelectMethod = "ListAll"; } }
第三步,现在可以运行查看效果了,在改变了SelectMethod后,ListView会自动刷新显示内容。其它操作绑定均无问题。
问题的解决主要就是通过修改DataSource的SelectMethod方法达到更改查询的目的。