当前位置:编程学习 > C#/ASP.NET >>

objectdatasource的查询参数不固定,怎么解决

asp.net:用了一个数据集,数据集中有一个查询方法GetData作为objectdatasource的selectmethod,listview使用该objectdatasource作为数据源。问题:页面上提供了几个查询条件(例如按姓名,按部门,按性别),这些查询条件用户可以随意组合,也就是说查询参数不固定,那么点击查询按钮后,怎么把用户选择的查询条件传给数据集中提供的方法GetData?对objectdatasource做些什么(ControlParameter)?后台查询方法该怎么写?越详细越好啊 --------------------编程问答-------------------- 没人么 --------------------编程问答-------------------- 首先,存储过程应该这样写
Create Procedure getdate
@username varchar(30),--姓名
@userbranch varchar(40),--部门
@usersex varchar(10) --性别
as
begin
     select * from users where (username=@username or @username='')
       and (userbranch=@userbranch or @ @userbranch='')
       and (usersex=@usersex or @userx='')
--可以组合查询
end
然后代码里username,usersex,userbranch作为参数,如果只按照姓名查询,则usersex和userbranch赋值为"",如果是整数类型,则赋值为0 --------------------编程问答--------------------
引用 楼主 tfdjml 的回复:
asp.net:用了一个数据集,数据集中有一个查询方法GetData作为objectdatasource的selectmethod,listview使用该objectdatasource作为数据源。问题:页面上提供了几个查询条件(例如按姓名,按部门,按性别),这些查询条件用户可以随意组合,也就是说查询参数不固定,那么点击查询按钮后,怎么把用户选择的查询条件传给数据集中提供的方法GetData?对objectdatasource做些什么(ControlParameter)?后台查询方法该怎么写?越详细越好啊

查询参数不可能不确定,因为你的查询发方法是确定的。只不过,参数值可以判断是否设置了值。例如对于string类型的参数,如果输入的值不是null也不是string.Empty,才参与查询,否则就应该被查询时自动忽略。其它参数也是如此,通常都是忽略默认值,例如对于int类型参数当它为0时默认就会忽略。 --------------------编程问答-------------------- 这是在很多有名的开源系统中通用的设计方法。你如果参与开放式的一些大项目,会看到这样的设计。很多服务(例如支持电视机顶盒的节目指南)都需要这样,例如一个服务有8个参数,它允许各种客户端程序这样来忽略一些参数,而仅需要提供一个服务,而根本不用提供200多个不同参数组合的服务。

我的回复中前半部分是告诉你知识,后半部分(如果存在的话)是告诉你很低级的简单做法。有人说看我的回复,他只看后半部分,我其实觉得这样来看我的回复、还不如去上北大青鸟学习。 --------------------编程问答-------------------- 当你将控件绑定到ObjectDatasource时,也就是在ObjectDatasource内部使用 ControlParameter 来声明时,就要考虑到你的查询录入控件的默认值、跟查询方法的默认值,是否匹配的问题。 --------------------编程问答--------------------
引用 5 楼 sp1234 的回复:
当你将控件绑定到ObjectDatasource时,也就是在ObjectDatasource内部使用 ControlParameter 来声明时,就要考虑到你的查询录入控件的默认值、跟查询方法的默认值,是否匹配的问题。
比如我的select中的where是:where Name=@Name and DepartmentId=@DepartmentId。页面提供了文本框textboxName和下拉框dropdownlistDepartment作为参数,那么在配置objectdatasource添加controlparameter时,参数Name和DepartmentId的默认值分别是什么呢?而且我这里又由于加了ControlParameter后,出现了错误:ObjectDataSource1未能找到带参数的非泛型方法QueryEmployeeCount:Name, DepartmentId, 我用了高效分页,QueryEmployeeCount函数只是用来获得员工数的,为什么会提示这样的错误?比较长,谢谢大侠了。。。 --------------------编程问答--------------------
引用 5 楼 sp1234 的回复:
当你将控件绑定到ObjectDatasource时,也就是在ObjectDatasource内部使用 ControlParameter 来声明时,就要考虑到你的查询录入控件的默认值、跟查询方法的默认值,是否匹配的问题。
送佛送到西啊。。。先谢了
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,