从DataGridView过滤/搜索

时间:2014-05-07 06:37:22

标签: sql vb.net datagridview

我在表单中有DataGridView,其中显示的客户列表包含IDFirst NameLast NameAddress列。我还添加了TextBox来执行搜索查询。我想使用单个DataGridView根据给定列过滤我的TextBox(就像多数据过滤器/搜索一样,我可以通过在单个TextBox上键入来从这四列中进行选择) 。

问题是:我是否需要在这里创建一个绑定源(我使用sql数据库填充我的DataGridView)还是有办法创建过滤器而不必添加绑定源?

2 个答案:

答案 0 :(得分:1)

您不使用sql数据库填充网格。您从SQL Server数据库中填充网格,其中包含其他内容,例如: SqlDataAdapterDataTable

BindingSource应该是一站式处理绑定数据的商店,所以,虽然你不必使用它,但我建议这样做。它是否可以帮助您过滤数据取决于它的约束力。 BindingSource实际上并不进行过滤本身的工作,而是将工作传递给基础IBindingListView实现(如果有)。例如,如果基础数据源是DataTable,则将使用其RowFilter的{​​{1}}。您可以自己设置DefaultView

如果您想自己完成所有繁重的工作,那么您也可以自己搜索网格,然后隐藏不匹配的行。这些行仍然存在,因此在代码中使用数据时必须考虑到这一点。

答案 1 :(得分:1)

您必须通过传递表单

中的参数值来创建查询以使用like关键字检索数据

示例:

  1. 传递参数
    form(cmd.parameters.add(nvarchar, 20).value = "textbox.text")
    
  2. 创建存储过程

    CREATE PROCEDURE procedure_name
        @searchvalue varchar(20)
    AS
    BEGIN
        SELECT
            ID, FirstName, LastName, Address 
        FROM
            tablename 
        WHERE
            FirstName LIKE '%@SearchTerm%'
    END
    

    以上存储过程将检索FirstName列值对应于该名称的所有行

  3. 然后将结果传递给gridview