GridView 列上的最大值和最小值 VB.NET

MAX & MIN Value on GridView Column VB.NET

我正在开发一个小程序来获取 gridview (DevExpress) 中特定列的最大值,但我无法按需要执行它。

你能帮我看看我错在哪里吗?

    Dim cells() As GridCell = GridView2.GetSelectedCells()
    Dim values As New List(Of Decimal)()
    For i As Integer = 0 To GridView2.RowCount - 1
        Dim value As Decimal = Convert.ToDecimal(GridView2.GetRowCellValue(cells(i).RowHandle, cells(i).Column))
        values.Add(value)
    Next i
    values.Sort()

    MsgBox(values.Max().ToString())

此致。

使用内置的DataGridView,行数可以是Rows.Count -2,因为有一个额外的行供用户输入新记录。我不知道 DevExpress 是否以这种方式工作,但值得一试。

For i As Integer = 0 To GridView2.RowCount - 2

如果您的 GridView 使用 DataTable 作为数据源,那么以下代码可能会有所帮助。如果 DataTable 仍然可用,那么就从它开始。否则从网格中提取它。

DataTable 没有实现 IEnumerable 但有一个扩展方法来获取接口 (.AsEnumerable)。

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim dt = DirectCast(DataGridView1.DataSource, DataTable)
    Dim maxValue = Aggregate r In dt.AsEnumerable
                   Into MaxID = Max(r("ID"))   '"ID" is the name of a column
    MessageBox.Show(maxValue.ToString)
End Sub

Min 也一样,只需将 Max 更改为 Min。

计算网格列的总摘要

gridView1.Columns("UnitsInStock").Summary.Add(DevExpress.Data.SummaryItemType.Average, "UnitsInStock", "Avg={0:n2}")
gridView1.Columns("UnitsInStock").Summary.Add(DevExpress.Data.SummaryItemType.Sum, "UnitsInStock", "Sum={0}")
Dim item As GridColumnSummaryItem = New GridColumnSummaryItem(DevExpress.Data.SummaryItemType.Max, "UnitsInStock", "Max={0}")
gridView1.Columns("UnitsInStock").Summary.Add(item)

Devexpress 文档:

https://documentation.devexpress.com/WindowsForms/DevExpress.XtraGrid.Columns.GridColumn.Summary.property

https://documentation.devexpress.com/WindowsForms/9677/Controls-and-Libraries/Data-Grid/Examples/Summaries/How-to-Calculate-Single-Total-Summary-for-Grid-s-Column