Если вы действительно хотите рассчитать значение «Чистых продаж» с помощью кнопки, то вы можете сделать что-то вроде этого:
enum GVColumns
{
//We make an enum for our GridView columns
Id = 0,
CustomerName,
BillNum,
SubTotal,
Discount,
GrandTotal,
Credit,
AddedDate,
AddedBy
}
private void btnsubtootal_Click(object sender, EventArgs e)
{
decimal grandtotalByDate = 0;
DateTime searchedDate = new DateTime();
foreach (DataGridViewRow row in dgvPurchase.SelectedRows)
{
var txtDateAddedValue = row.Cells[(int)GVColumns.AddedDate].Value.ToString();
searchedDate = DateTime.Parse(txtDateAddedValue); //get our "added_date" to search
}
foreach (DataGridViewRow row in dgvPurchase.Rows)
{
var txtGrandTotalValue = row.Cells[(int)GVColumns.GrandTotal].Value.ToString(); //"grand_total" cell value as string
var txtDateAddedValue = row.Cells[(int)GVColumns.AddedDate].Value.ToString(); //"added_date" cell value as string
var rowDateAddedValue = DateTime.Parse(txtDateAddedValue);
//check if our dates match
if (rowDateAddedValue.Date == searchedDate.Date)
{
//add "grand_total" values if dates match
grandtotalByDate += decimal.Parse(txtGrandTotalValue);
}
}
txtNetSales.Text = grandtotalByDate.ToString("N2");
}
Но я бы действительно порекомендовал изменить логику использования кнопки, чтобы просто использовать событие RowStateChanged
вашего GridView
, поэтому вы просто выбираете строку и она вычисляет ее:
private void dgvPurchase_RowStateChanged(object sender, DataGridViewRowStateChangedEventArgs e)
{
if (e.StateChanged == DataGridViewElementStates.Selected)
{
var txtDateAddedValue = e.Row.Cells[(int)GVColumns.AddedDate].Value.ToString();
DateTime searchedDate = DateTime.Parse(txtDateAddedValue);
decimal grandtotalByDate = 0;
foreach (DataGridViewRow row in dgvPurchase.Rows)
{
var txtDAV = row.Cells[(int)GVColumns.AddedDate].Value.ToString();
var dateRow = DateTime.Parse(txtDAV);
if (dateRow.Date == searchedDate.Date)
{
var txtGrandTotalValue = row.Cells[(int)GVColumns.GrandTotal].Value.ToString();
grandtotalByDate += decimal.Parse(txtGrandTotalValue);
}
}
lblTotalByDate.Text = grandtotalByDate.ToString("N2");
}
}