Максимальное и минимальное значение в столбце GridView VB.NET - PullRequest
0 голосов
/ 28 апреля 2020

Я разрабатываю небольшую программу, чтобы получить максимум указанного столбца c в виде сетки (Dev Express), но я не смог выполнить его так, как хотел.

Можете ли вы поддержать меня? в том, где я вижу ошибку?

    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())

С уважением.

Ответы [ 2 ]

1 голос
/ 28 апреля 2020

Рассчитать итоговую сводку для столбца таблицы

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)

enter image description here

Dev express Документация:

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

1 голос
/ 28 апреля 2020

Со встроенным DataGridView количество строк может быть Rows.Count -2, потому что есть дополнительная строка для пользователя, чтобы ввести новую запись. Я понятия не имею, если Dev Express работает таким образом, но стоит попробовать.

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 на Мин.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...