Как сделать DataGridView сортировкой при использовании Entity Framework для извлечения данных из базы данных?Entity Framework: как сделать DataGridView Sortable?
Я помещаю запрос в DataSource DataGridView.
Dim Query = (From t In DB.interview_task Where t.CONTROL = CONTROL And t.CLIENTCODE = CLIENTCODE Order By t.StartDate Descending
Select t.ID, t.CONTROL, t.CLIENTCODE, t.TaskType, t.Title, t.StartDate, t.DueUserName, Status = If(t.CompleteDate Is Nothing, "In Progress", "Completed")).ToList
dgvTaskList.DataSource = Query
Единственный способ загрузки данных в DGV является превращение его в .list, но это делает сетку unsortable.
Примеры, которые я вижу в Google, устарели или действительно сложны. Это похоже на то, что должно быть простым. Я сбрасывал запрос в DataTable, но возвращаю Time, который не находится в столбце.
Итак, как мне поместить запрос EF на DGV и сделать его сортировкой?
Update:
Так что я был в состоянии получить его на работу, используя ответ Карен, я сделал следующее;
Public Sub Load_TaskList()
Using DB As New wotcDB
Dim Query2 = From t In DB.interview_task Where t.CONTROL = CONTROL And t.CLIENTCODE = CLIENTCODE Order By t.StartDate Descending
Select New TaskList With {.ID = t.ID,
.CONTROL = t.CONTROL,
.CLIENTCODE = t.CLIENTCODE,
.TaskType = t.TaskType,
.Title = t.Title,
.StartDate = t.StartDate,
.Status = If(t.CompleteDate Is Nothing, "In Progress", "Completed")}
dgvTaskList.DataSource = New WOTC_Common.SortableBindingList(Of TaskList)(Query2.ToList)
End Using
dgvTaskList.Columns("id").Visible = False
dgvTaskList.Columns("CONTROL").Visible = False
dgvTaskList.Columns("CLIENTCODE").Visible = False
End Sub
Class TaskList
Public Property ID As Integer
Public Property CONTROL As Integer
Public Property CLIENTCODE As String
Public Property TaskType As String
Public Property Title As String
Public Property StartDate As Date?
Public Property DueUserName As String
Public Property Status As String
End Class
Так что для другого вопроса. Можно ли использовать этот метод сортировки без объявления TaskList?
Вызов 'Sort (...)'? Просто глядя на документацию для DataGridView, я вижу «ColumnHeaderMouseClickEvent». Почему бы не послушать его и назвать 'Sort' для этого столбца? Это кажется самым простым. https://msdn.microsoft.com/en-us/library/0868ft3z(v=vs.110).aspx – TyCobb
Что касается использования TaskList, нет, то SortableBindingList нуждается в сильном типе. –
Bummer, во всяком случае, ваш ответ сработал. Отмечено как ответ. Спасибо. – Kayot