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:
This is a great way to do this, and I found it logical and easy to code.
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