日期:2014-05-18  浏览次数:20529 次

ASP.NET实现数据的条件查询
请回答者先注意看清问题,谢谢。
比如界面上放一个下拉控件,输入查询的条件,拿书本来说,页码数、价格、书名、出版社等都是查询条件;然后放一个文本控件,输入关键字,比如书名为《高等数学》,高等数学就是关键字,然后按某按钮啊,就查询,在listview、gridview等控件上输出。

首先我觉得用listview跟objectdatasourse控件结合吧,很方便,很容易的listview的增删改查自动配置好了,但数据源好像要动用到生成好了的dataset,配置dataset的时候又不能动用存储过程,我无法解决在where条件的等号前面有参数的问题(因为只能输入sql语句,偶试着输入执行存储过程的语句,但结果不是预期的。而且sql查询语句where等号前面带参数的话,执行结果也是错误的)
如果数据源用sqldatasourse,那直接有选项可以选择sql的查询语句是存储过程,然后偶做了相应的配置,然后测试查询,结果不是预期的。但我对该存储过程进行检测,是正常工作的(存储过程下面给出)。此外,用sqldatasourse吧,作为listview的数据源的话,不能更改和删除啊。
ALTER PROCEDURE paper_condition_search
@condition varchar(10),
@word varchar(50)
AS
select*from paper where @condition=@word
RETURN
最后,我觉得可行的办法是先调用存储过程取出数据,然后填充用代码创建的数据集,然后绑定到listview控件中。但如此一来,关于listview的增删改查操作要自己动手写代码,好像很麻烦啊。
还望大师多多指教,谢谢。

------解决方案--------------------
探讨

好吧,偶发现偶的存储过程错了,等号前面还是不能带参数。但试问如果这样的话,条件查询还有简单路子吗

------解决方案--------------------

C# code

//可以用Sql拼接的形式,假设你条件都在不同的文本框(这根据你的实际情况而定)

string sql = "select * from 表名 where 1=1";

if(第一个条件Texbox.Text.Trim() != "")
{
   sql += " and 条件1字段  = '" + 第一个条件Texbox.Text.Trim() + "'";
}
else if(第二个条件Texbox.Text.Trim() != "")
{
   sql += " and 条件2字段  = '" + 第一个条件Texbox.Text.Trim() + "'";
}
。。。。。