簡體   English   中英

數據源不支持排序

[英]The data source does not support sorting

我在VB.NET擁有一個動態數據LINQ to SQL ASP.Net網站,並且在對GridView進行排序和實現的搜索例程時遇到了一些麻煩。 Page_Load ,GridView按字段( Departments.department )以ASC順序排序。 但是,當我使用下面的代碼執行搜索時,出現錯誤

數據源不支持排序。

我假設由於DataSource/ID緣故,當進行搜索后Page_Load事件嘗試對數據進行排序時,問題就來了。

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

我創建了一個新錯誤。 如果我執行第二次搜索而沒有返回到Employees表,則會發生這種情況。

“ GridView1”觸發了未處理的事件排序。

如果您使用SqlDataSource並使用數據源ID將gridview連接到數據源,則可以為您神奇地進行排序。 您無需做任何支持。

但是,如果將數據源設置為您在代碼中創建的某個對象,則排序不會神奇地發生。 當用戶單擊列標題時,將觸發OnSorting事件。 您必須編寫代碼來處理該事件。 通常,這意味着按所需順序重新生成數據,或者重新生成數據然后對其進行排序。

例如,如果您使用SQL查詢生成數據,我有時會創建一個運行SQL查詢並返回DataSet的函數。 此函數將sort字段作為參數,並將其粘貼到SQL查詢中。 然后,對於初始顯示調用,此函數以默認排序順序傳遞,對於OnSorting調用,此函數傳遞所需的排序字段。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM