二次检索怎么做? 假设你的DataGrid绑定的DataView 是dv举个例子,如果你要查找Name为XXX的,dv.RowFilter="NAME=XXX";datagrid1.DataSource=dv;datagrid1.DataBind(); 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我最近做了一个可以n次检索的控件,主要依赖于存储过程的编写,下面是代码CREATE PROCEDURE MultiConditionSearch @tableName varchar(20), @strNames varchar(100), @strValues varchar(100)as declare @sql nvarchar(1000) set @sql = '' if(@strNames = 'ALL') begin set @sql = 'select * from ' + @tableName end else begin select @strNames = @strNames + ',',@strValues = @strValues + ',' while(@strNames <> '') begin set @sql = @sql + substring(@strNames,1,charindex(',',@strNames) - 1) + '=' +'''' + substring(@strValues,1,charindex(',',@strValues) - 1) + ''' and ' select @strNames = substring(@strNames,charindex(',',@strNames) + 1,datalength(@strNames)) select @strValues = substring(@strValues,charindex(',',@strValues) +1,datalength(@strValues)) end set @sql = 'select * from ' + @tableName +' where ' + @sql +' 1=1' end exec(@sql)GO有点复杂,主要功能是从某表中根据输入的条件字符串检索,两个字符串分别是字段名组合与字段值组合,中间用逗号分隔.程序中通过收集查询条件,然后调用存储过程,条件收集时分别构造两个字符串作为参数,可以用StringBuilder和Session(因为我的程序中点击查询后页面重新加载,所以没用ViewState),当然可以用CheckBox来判断是否为再次检索:)我的方法希望对你有所帮助! 两个方法,呵呵,这个问题我也问过,后来利用Session解决了,就如楼上提出的方法一样.1.利用Viewstate2.利用Session/Cookies 我的方法是用ViewState存储查询条件,然后需要二次查询的时候,拼写查询条件就可以了:) 可以把查询条件联合起来.实际上只是对第一次的结果再进行一次筛选.比如:第一次:"Select * from table where name=xxx"第二次=第一次 & "and sex=''"这样多次查询都可以的. [Win32Exception (0x80004005): 拒绝访问。] 模拟刷新的问题 急 ID相同,如何取得 水晶报表的重要问题 菜鸟之笨问题请帮帮我吧!万分感谢! 不知道各位有没有碰到过? datagrid 菜鸟菜问题(不同目录中文件添加到项目的问题) 看看你的理解! WEBFORM上可以实现拖放功能和右键菜单功能吗? 在机器1上aspx网页连接数据库是正常,在机器2上不能连接到!(是安装好的web应用,机器2无调试环境!) ASP.net 的开发,调试问题,高手进来 快速结贴!……打开上级目录文件问题!
CREATE PROCEDURE MultiConditionSearch
@tableName varchar(20),
@strNames varchar(100),
@strValues varchar(100)
as
declare @sql nvarchar(1000)
set @sql = ''
if(@strNames = 'ALL')
begin
set @sql = 'select * from ' + @tableName
end
else
begin
select @strNames = @strNames + ',',@strValues = @strValues + ','
while(@strNames <> '')
begin
set @sql = @sql + substring(@strNames,1,charindex(',',@strNames) - 1) + '=' +'''' + substring(@strValues,1,charindex(',',@strValues) - 1) + ''' and ' select @strNames = substring(@strNames,charindex(',',@strNames) + 1,datalength(@strNames))
select @strValues = substring(@strValues,charindex(',',@strValues) +1,datalength(@strValues))
end set @sql = 'select * from ' + @tableName +' where ' + @sql +' 1=1'
end
exec(@sql)
GO
有点复杂,主要功能是从某表中根据输入的条件字符串检索,两个字符串分别是字段名组合与字段值组合,中间用逗号分隔.程序中通过收集查询条件,然后调用存储过程,条件收集时分别构造两个字符串作为参数,可以用StringBuilder和Session(因为我的程序中点击查询后页面重新加载,所以没用ViewState),当然可以用CheckBox来判断是否为再次检索:)
我的方法希望对你有所帮助!
1.利用Viewstate
2.利用Session/Cookies
比如:
第一次:"Select * from table where name=xxx"
第二次=第一次 & "and sex=''"
这样多次查询都可以的.