我在表单中有DataGridView
,其中显示的客户列表包含ID
,First Name
,Last Name
,Address
列。我还添加了TextBox
来执行搜索查询。我想使用单个DataGridView
根据给定列过滤我的TextBox
(就像多数据过滤器/搜索一样,我可以通过在单个TextBox
上键入来从这四列中进行选择) 。
问题是:我是否需要在这里创建一个绑定源(我使用sql数据库填充我的DataGridView
)还是有办法创建过滤器而不必添加绑定源?
答案 0 :(得分:1)
您不使用sql数据库填充网格。您从SQL Server数据库中填充网格,其中包含其他内容,例如: SqlDataAdapter
和DataTable
。
BindingSource
应该是一站式处理绑定数据的商店,所以,虽然你不必使用它,但我建议这样做。它是否可以帮助您过滤数据取决于它的约束力。 BindingSource
实际上并不进行过滤本身的工作,而是将工作传递给基础IBindingListView
实现(如果有)。例如,如果基础数据源是DataTable
,则将使用其RowFilter
的{{1}}。您可以自己设置DefaultView
。
如果您想自己完成所有繁重的工作,那么您也可以自己搜索网格,然后隐藏不匹配的行。这些行仍然存在,因此在代码中使用数据时必须考虑到这一点。
答案 1 :(得分:1)
您必须通过传递表单
中的参数值来创建查询以使用like关键字检索数据示例:
从
传递参数form(cmd.parameters.add(nvarchar, 20).value = "textbox.text")
创建存储过程
CREATE PROCEDURE procedure_name
@searchvalue varchar(20)
AS
BEGIN
SELECT
ID, FirstName, LastName, Address
FROM
tablename
WHERE
FirstName LIKE '%@SearchTerm%'
END
以上存储过程将检索FirstName
列值对应于该名称的所有行
然后将结果传递给gridview