.net – DataGridView排序不起作用
发布时间:2020-12-17 00:11:41 所属栏目:大数据 来源:网络整理
导读:Visual Studio 2010 VB.NET 我有一个DataGridView.DataSource设置为自定义对象的集合.列使用自定义对象中的只读属性进行显示,此对话框仅供显示.这些属性都返回String对象.我将列中的所有列设置为自动排序模式(未设置的列是按钮或复选框).但它没有排序.我goog
Visual Studio 2010 VB.NET
我有一个DataGridView.DataSource设置为自定义对象的集合.列使用自定义对象中的只读属性进行显示,此对话框仅供显示.这些属性都返回String对象.我将列中的所有列设置为自动排序模式(未设置的列是按钮或复选框).但它没有排序.我google了,大多数人使用sql或绑定源,但我使用的是一个简单的vb集合.有人说我应该实现IComparable但不是String已经IComparable? 任何帮助,将不胜感激? 感谢名单 Bodger 根据请求,这里有一些代码片段. 此方法从我在设计的列中详细定义列 列名称称为pSelected或pCustomer,对应于a Protected Sub UpdateDGVUS() If Not USColumnsInitted Then USColumnsInitted = True dgvUS.AutoGenerateColumns = False dgvUS.Columns.Clear() Dim iIdx As Integer iIdx = 0 dgvUS.Columns.Insert(iIdx,Me.pSelected) dgvUS.Columns("pSelected").DisplayIndex = iIdx dgvUS.Columns("pSelected").SortMode = DataGridViewColumnSortMode.Automatic iIdx = iIdx + 1 dgvUS.Columns.Insert(iIdx,Me.pCustomer) dgvUS.Columns("pCustomer").DisplayIndex = iIdx dgvUS.Columns("pCustomer").SortMode = DataGridViewColumnSortMode.Automatic iIdx = iIdx + 1 dgvUS.Columns.Insert(iIdx,Me.pDetails) dgvUS.Columns("pDetails").DisplayIndex = iIdx dgvUS.Columns("pDetails").SortMode = DataGridViewColumnSortMode.Automatic iIdx = iIdx + 1 dgvUS.Columns.Insert(iIdx,Me.pSelectCustomerInvoice) dgvUS.Columns("pSelectCustomerInvoice").DisplayIndex = iIdx iIdx = iIdx + 1 dgvUS.Columns.Insert(iIdx,Me.pDate) dgvUS.Columns("pDate").DisplayIndex = iIdx dgvUS.Columns("pDate").SortMode = DataGridViewColumnSortMode.Automatic iIdx = iIdx + 1 dgvUS.Columns.Insert(iIdx,Me.pAmount) dgvUS.Columns("pAmount").DisplayIndex = iIdx dgvUS.Columns("pAmount").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight dgvUS.Columns("pAmount").SortMode = DataGridViewColumnSortMode.Automatic iIdx = iIdx + 1 dgvUS.Columns.Insert(iIdx,Me.pName) dgvUS.Columns("pName").DisplayIndex = iIdx dgvUS.Columns("pName").SortMode = DataGridViewColumnSortMode.Automatic iIdx = iIdx + 1 dgvUS.Columns.Insert(iIdx,Me.pPayment) dgvUS.Columns("pPayment").DisplayIndex = iIdx dgvUS.Columns("pPayment").SortMode = DataGridViewColumnSortMode.Automatic iIdx = iIdx + 1 dgvUS.Columns.Insert(iIdx,Me.pCompany) dgvUS.Columns("pCompany").DisplayIndex = iIdx dgvUS.Columns("pCompany").SortMode = DataGridViewColumnSortMode.Automatic iIdx = iIdx + 1 dgvUS.Columns.Insert(iIdx,Me.pType) dgvUS.Columns("pType").DisplayIndex = iIdx dgvUS.Columns("pType").SortMode = DataGridViewColumnSortMode.Automatic iIdx = iIdx + 1 dgvUS.Columns.Insert(iIdx,Me.pDescription) dgvUS.Columns("pDescription").DisplayIndex = iIdx dgvUS.Columns("pDescription").SortMode = DataGridViewColumnSortMode.Automatic iIdx = iIdx + 1 dataUpdatedUS() End If End Sub 这是集合中自定义对象的片段 Public Class ItemXact01 Public Property FirstName As String Public Property LastName As String Public Property Company As String Public Property Type As String Public Property Description As String Public Property RefNumber As String Public Property DownloadID As String Public Property Selected As Boolean Public Property RequestID As Integer ... Public ReadOnly Property pCompany As String Get pCompany = Company End Get End Property Public ReadOnly Property pType As String Get pType = Type End Get End Property Public ReadOnly Property pDescription As String Get pDescription = Description End Get End Property Public ReadOnly Property pSelected As Boolean Get pSelected = Selected End Get End Property … 数据通过此代码实现 Private Sub dataUpdateDGV(ByRef dgv As DataGridView,ByRef myCollection As Collection) myMain.Log("dataUpdatedDGV: 001 :" & dgv.RowCount & ":" & myCollection.Count & ":") ' for some reason the not equal to does not show in the next line If dgv.RowCount myCollection.Count Then myMain.Log("dataUpdatedDGV: 002") dgv.DataSource = Nothing If myCollection.Count > 0 Then myMain.Log("dataUpdatedDGV: 003") dgv.DataSource = myCollection End If End If myMain.Log("dataUpdatedDGV: 004") dgv.Invalidate() dgv.Update() dgv.Refresh() myMain.Log("dataUpdatedDGV: OUT") End Sub
如果我没记错的话,你可以在你的集合和datagridview之间放置一个绑定源,绑定源将提供一堆功能.我认为它也允许你排序.由于我现在无法测试,所以这一切都是我的头脑.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |