Skip to main content

String index array to calculate totals using Dictionary type

Thought I would document this, since it took me a while to gather all the information to do it, but once I got it, it was very useful.
I searched things like how to create a string indexed array and, multidimensional arrays and lists to eventually find the Dictionary Type, very powerful, and you can link it with objects/classes and lists to extend it.
Essentially I was running a SQL query where I am building a complex table using a number of conditions, and could not use GridView because of that. But I also wanted a total at the bottom. So created a Total Table in the asp page.

Then in the code file this is what I added:
class ItemTotals
{
  public string ItemDesc { get; set; }
  public double TotalsQty { get; set; }
}

//----
// code to run query... which returns into oleData
//----
string _strItemDesc = oleData["ItemDesc"].ToString();
if (sumItemTotals.ContainsKey(_strItemDesc))
{
   sumItemTotals[_strItemDesc].TotalsQty += Convert.ToDouble(oleData["QuantityOrdered"]);
}
else
{
   sumItemTotals[_strItemDesc] = new ItemTotals
   {
      ItemDesc = _strItemDesc,
      TotalsQty = Convert.ToDouble(oleData["QuantityOrdered"].ToString())
   };
}
// now do the totals table
TableRow _tblItemsNameRow = new TableRow();
TableRow _tblItemsTotalRow = new TableRow();
// add headers
TableCell _tblItemHdr1 = new TableCell();
_tblItemHdr1.Text = "Item";
_tblItemHdr1.Font.Bold = true;
_tblItemsNameRow.Cells.Add(_tblItemHdr1);
TableCell _tblItemHdr2 = new TableCell();
_tblItemHdr2.Text = "Total";
_tblItemHdr2.Font.Bold = true;
_tblItemsTotalRow.Cells.Add(_tblItemHdr2);

foreach (KeyValuePair _pair in sumItemTotals)
{
  // add the description
  TableCell _tblCellItemDesc = new TableCell();
  _tblCellItemDesc.Text = _pair.Value.ItemDesc;
  _tblCellItemDesc.Font.Bold = true;
  _tblItemsNameRow.Cells.Add(_tblCellItemDesc);
  // add the total
  TableCell _tblCellItemTotal = new TableCell();
  _tblCellItemTotal.Text = String.Format("{0:0.00}",_pair.Value.TotalsQty);
  _tblCellItemTotal.HorizontalAlign = System.Web.UI.WebControls.HorizontalAlign.Right;
  _tblItemsTotalRow.Cells.Add(_tblCellItemTotal);
}
//now add Theme total rows.
tblTotals.Rows.Add(_tblItemsNameRow);
tblTotals.Rows.Add(_tblItemsTotalRow);

This is a great way to do this, and I found it logical and easy to code.

Comments

Popular posts from this blog

Bitcoin / Cryptocurrency – what is it and how can I benefit

What is it I started investigating Bitcoin when it was worth just over $1000 a bitcoin. I was interested in what it was and how it worked. A lot of people are saying we missed the boat, but I believe that everyone should at least try put a little money in now, or at least use a faucet (see below) to make a little micro-currency. You can read a Wiki article about bitcoin and its history etc. But what you need to know is that it is a currency, that is independent of country. No one really knows who invented the concept of a cryptocurrency since the person who published the paper used a nom de plume. All new cryptocurrencies work more or less the same way as Bitcoin. So as I explain below I interchange these terms. Bitcoin is the original cryptocurrency. How Bitcoin works The currency releases a coin based on a mathematical formula. There will never be more than 21 million bitcoins (other cryptocurrencies do not work like this). Each bitcoin can have divided into one hundred mil

Migrating QuickBooks to Sage One Cloud accounting - Part 1 Exporting the data

Some notes Sage means sage one online accounts, wherever we say Sage we mean Sage one. The QuickBooks we used was version 2012 Professional. But most of the information is similar. What you need > You need the templates from Sage and the data from QuickBooks, see below for how to do these. Get Import Templates from Sage To get the templates for the items go to help.accounting.sageone.co.za/en_za/accounting/from-your-previous-accounting-system.html Although you can construct the templates from the information in this post you can download samples of the templates need. Below are the links they provide: Use the following downloads which are referenced in the guide: General Ledger Accounts Import Template Customer Import Template Customer Outstanding Invoices Import Template Supplier Import Template Supplier Outstanding Invoices Import Template Item Import Template   Another useful page that is hard to find on their system is: help.accounting.sageone.co.za/en_za/ac

Mindfullness Meditation and Depression - in a pod cast

Over the last 3 years I have found that meditation has really assisted me, in resolving the depression I have had. I have planned to write about my experience for a while, and hopefully will get around to doing that. However today having listen to the latest podcast by Dan Harris on 10% happier, so many things just clicked in to place, so I want to share it. To understand what is covered in the podcast I would recommend you understand what mindfulness meditation is, and what the default mode network in the brain is (see links below). Listen to the pod cast - but here are some extracts (which I do not have permission to publish - and will remove if asked). Link to podcast: tumello.com/listen/H11a5NYJf; or itunes.apple.com/us/podcast/10-happier-with-dan-harris/id1087147821 Chuck Raison, a psychiatrist and a professor of psychiatry at the University of Wisconsin-Madison School of Medicine and Public Health, and Vlad Maletic, a clinical professor of neuropsychiatry and behavior sc