1

我有一个动态数据LINQ to SQLASP.Net 网站,并且在对我的 GridView 排序和我已经实现的搜索例程VB.NET方面遇到了一些麻烦。在 上,GridView 按字段 ( )顺序排序。但是,当我使用下面的代码执行搜索时,出现错误Page_LoadDepartments.departmentASC

数据源不支持排序。

我假设Page_Load在进行搜索后事件尝试对数据进行排序时出现问题,因为DataSource/ID.

Dim button = DirectCast(sender, Button)
If button.ID = btnMultiColumnSearchClear.ID Then
    txbMultiColumnSearch.Text = [String].Empty
Else
    Using Data As New wcPhonesDataContext()
        Dim EmployeeNameString As String = txbMultiColumnSearch.Text
        Dim SearchResults = Data.Employees.Where(Function(Employees) Employees.Employee.Contains(EmployeeNameString))

        GridView1.DataSourceID = ""
        GridView1.DataSource = SearchResults
        GridView1.DataBind()
    End Using
End If

已解决,但现在我有一个新问题,这是我用来解决此问题的代码...

    Dim button = DirectCast(sender, Button)
    If button.ID = btnMultiColumnSearchClear.ID Then
        txbMultiColumnSearch.Text = [String].Empty
    Else
        Using Data As New wcPhonesDataContext()
            Dim EmployeeNameString As String = txbMultiColumnSearch.Text
            Dim SearchResults = Data.Employees.Where(Function(Employees) Employees.Employee.Contains(EmployeeNameString))

            GridView1.Sort("", SortDirection.Ascending)
            GridView1.DataSourceID = ""
            GridView1.DataSource = SearchResults
            GridView1.DataBind()

        End Using
    End If

我创建了一个新错误。如果我执行第二次搜索而不返回到雇员表,就会发生这种情况。

'GridView1' 触发了未处理的事件排序。

4

1 回答 1

1

如果您使用 SqlDataSource 并使用 datasourceid 将 gridview 连接到数据源,那么排序会神奇地为您完成。你不需要做任何事情来支持它。

但是,如果将数据源设置为您在代码中创建的某个对象,则排序不会神奇地发生在您身上。当用户单击列标题时,会触发 OnSorting 事件。您必须编写代码来处理事件。通常这意味着以所需的顺序重新生成数据,或者重新生成数据然后对其进行排序。

例如,如果您使用 SQL 查询生成数据,我有时会创建一个函数来运行 SQL 查询并返回一个 DataSet。此函数将排序字段作为参数粘贴到 SQL 查询中。然后对于初始显示调用此函数并传入默认排序顺序,对于 OnSorting 调用此函数传入所需的排序字段。

于 2013-07-11T18:08:07.237 回答