我申请的公司给了我一个小项目。他们想要一个使用asp.net GridView
,FormView
的小应用程序和一个带有DataSet(xsd)文件的ObjectDataSource
。我一直在做3层应用程序,但是以不同的方式,我将我的DataAccess层作为ac sharp文件,方法接受params并返回数据表等。我的业务层是另一个类,其中静态方法返回业务对象和集合,利用了DAL课程。现在这个ObjectDataSource
是我真的不喜欢,它生成了一些我甚至看不到的代码?
我可以使应用程序工作到某一点(90%)。另外10%是我的问题。我需要通过名称功能进行搜索。有两个ObjectDataSource 1和2. ObjectDatasource1
只是在第一次加载时从表中获取每条记录。当搜索按钮变为cliked时,我将gridview的数据源设置为第二个ObjectDataSource
,其中有一个名为GetDataByNameSearch
的方法,它应该接受一个参数(全部由wizzzardz定义),参数源是control({{1} }})。虽然我的TextBox.Text
在FormView
获取参数的情况下正常工作,但此搜索不返回任何内容。搜索语句如下:
QueryString
了解如何使用这些ObjectDataSources,让生活更轻松(!)
答案 0 :(得分:1)
没有代码示例很难说,但我确实注意到你使用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 + '%')