ObjectDataSource麻烦

时间:2009-09-18 09:24:44

标签: asp.net gridview objectdatasource formview

我申请的公司给了我一个小项目。他们想要一个使用asp.net GridViewFormView的小应用程序和一个带有DataSet(xsd)文件的ObjectDataSource。我一直在做3层应用程序,但是以不同的方式,我将我的DataAccess层作为ac sharp文件,方法接受params并返回数据表等。我的业务层是另一个类,其中静态方法返回业务对象和集合,利用了DAL课程。现在这个ObjectDataSource是我真的不喜欢,它生成了一些我甚至看不到的代码?

我可以使应用程序工作到某一点(90%)。另外10%是我的问题。我需要通过名称功能进行搜索。有两个ObjectDataSource 1和2. ObjectDatasource1只是在第一次加载时从表中获取每条记录。当搜索按钮变为cliked时,我将gridview的数据源设置为第二个ObjectDataSource,其中有一个名为GetDataByNameSearch的方法,它应该接受一个参数(全部由wizzzardz定义),参数源是control({{1} }})。虽然我的TextBox.TextFormView获取参数的情况下正常工作,但此搜索不返回任何内容。搜索语句如下:

QueryString

了解如何使用这些ObjectDataSources,让生活更轻松(!)

1 个答案:

答案 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 + '%')