我申请的公司给了我一个小项目。他们想要一个使用asp.net GridView、FormView和带有DataSet (xsd)文件的ObjectDataSource的小型应用程序。我一直在做3层应用程序,但以一种不同的方式,我的DataAccess层是一个c文件,带有接受参数和返回数据表等方法。我的业务层是另一个类,具有返回业务对象的静态方法和使用DAL类的集合。现在这个ObjectDataSource是我不喜欢的东西,它生成了一些我甚至看不到的代码?
我可以让应用程序工作到一定程度(90%)。另外10%是我的问题所在。我需要按名称搜索功能。有两个ObjectDataSources 1和2。ObjectDatasource1只在第一次加载时获取表中的每条记录。当搜索按钮被裁剪时,我将gridview的数据源设置为第二个控件,它有一个名为GetDataByNameSearch的方法,该方法应该接受一个参数(都是由wizzzardz定义的),参数源是ObjectDataSource (TextBox.Text)。虽然我的FormView在从QueryString获取参数时工作得很好,但是这个搜索没有返回任何结果。搜索语句如下:
SELECT Birthday, CreatedAt, ID, Name, Surname
FROM Users
WHERE (Name LIKE '%@name%') OR
(Surname LIKE '%@name%')有没有关于如何使用这些ObjectDataSources的想法,让生活变得更容易(!)
发布于 2009-09-20 08:47:52
没有代码样本就很难判断,但我确实注意到您使用SQL参数有点不寻常。
您必须:
SELECT Birthday, CreatedAt, ID, Name, Surname
FROM Users
WHERE (Name LIKE '%@name%') OR (Surname LIKE '%@name%')我不确定SQL '@‘参数在周围有演讲标记的情况下是否会起作用。我认为上面的例子只会导致在查询中使用文字字符串'%@name%‘,这就是为什么你可能得不到任何结果的原因。
SQL参数通常是这样使用的:
SELECT Birthday, CreatedAt, ID, Name, Surname
FROM Users
WHERE (Name LIKE @name) OR (Surname LIKE @name)..。但当然,您将丢失'%‘通配符。在将它们传递给查询之前,您可以将它们直接添加到参数字符串中。如果这是不可能的,也许可以尝试这个版本:
SELECT Birthday, CreatedAt, ID, Name, Surname
FROM Users
WHERE (Name LIKE '%' + @name + '%') OR (Surname LIKE '%' + @name + '%')https://stackoverflow.com/questions/1443434
复制相似问题