Member 11859517 Ответов: 1

Как прочитать значение столбца datagrid в C# WPF?


Привет,
У меня есть dataGrid в wpf, есть столбец с именем "Sub Total", теперь я хочу вычислить итог из subtotal, добавив все строки столбца sub total.
любить
-- итого --
10
20
30
при нажатии кнопки Total я хочу отобразить сообщение о том, что Total равен 60.
Как это сделать в wpf DataGrid c#.

Спасибо
Динь

Что я уже пробовал:

foreach (DataGridColumn column in grdBill.Columns)
               {
                   ???
               }

Я попробовал что-то вроде этого, но не понял, как это сделать.

Graeme_Grant

Как вы привязываете данные к сетке?

Member 11859517

У меня есть класс ProductDetails, имеющий свойства продукта. из текстового поля Inpeut я получаю значение для свойств, которые я привязываю к DataGrid.

<DataGrid Name="grdBill" MinHeight="150" >
&ЛТ;элемент управления DataGrid.колонны&ГТ;
&ЛТ;заголовок DataGridTextColumn="законопроекта нет". Ширина="150" привязки="{привязки BillNo}"&ГТ;
<DataGridTextColumn Header="ID" Width="150" Binding="{Binding ProductId}">
<DataGridTextColumn Header="Name" Width="200" Binding="{Binding ProductName}">
<DataGridTextColumn Header="Price" Width="150" Binding="{Binding ProductPrice}">
&ЛТ;DataGridTextColumn заголовок="количество" ширина="150" привязки="{привязки ProductQuentity}"&ГТ;
&ЛТ;DataGridTextColumn заголовок="Итого" ширина="150" привязки="{привязки ProductSubTotal}"&ГТ;





 private void btnAddBill_Click(object sender, RoutedEventArgs e)
        {
            if (txtQuantity.Text == "")
                return;
            var data = new ProductDetails() 
            { 
                BillNo = 12, 
                ProductId = Convert.ToInt32(txtID.Text), 
                ProductName = txtName.Text,
                ProductPrice = Convert.ToInt32(txtPrice.Text),
                ProductQuentity = Convert.ToInt32(txtQuantity.Text),
                ProductSubTotal = Convert.ToInt32(lblSubTotal.Content)
            };

            grdBill.Items.Add(data);

Graeme_Grant

Вот ваша проблема, вы занимаетесь программированием в стиле WinForm, а не WPF. Использовать ObservableCollection чтобы сохранить данные, привяжите сетку к ObservableCollection, то у вас есть прямой доступ к данным, нет необходимости жестко кодировать против сетки.

Затем вы можете изменить сетку xaml и привязки или использовать другой элемент управления, и ваш код не сломается!

1 Ответов

Рейтинг:
2

Nowfer Rifkan

попробуйте это >>

private void calculate()
{
    decimal sum1 = 0;

    foreach (GridViewRow i in this.gv1.Rows)
    {

        decimal e = Convert.ToDecimal(i.Cells[5].Text.ToString());
        sum1 = sum1 + e;
    }

    txtSubTotal.Text = sum1.ToString();

}