OK. May be I didnt give you a complete picture of the grid. I am rendering the webgrid based on XML which looks like:
(comments are underlined).
XML:
<Root>
<Section name="Raw Sewage"> //These form the column group
<Parameters>
<Parameter units="string" code="SP6" type="input" name="Influent Flow Rate"> //This node becomes a column in webgrid
<Average>1.0</Average> //This node forms the footer data
<Maximum>2.0</Maximum> //This node forms the footer data
<Minimum>3.0</Minimum> //This node forms the footer data
<Data></Data>//This node forms the footer data
<day type="value" number="1">0.3</day> //All these become rows in grid 1-30/31(no. of days in month)
<day type="value" number="2">0.2</day>
<day type="value" number="3">0.1</day>
....<day type="value" number="31"></day>
</Parameter>
</Parameters>
</Section>
</Root>
//****Reading above XML and creating a column for each parameter node :***//
XmlNodeList lstParameter = doc.SelectNodes("//*/*/Parameters/Parameter[@type=\"input\"]");
foreach (XmlNode node in lstParameter)
{
strHeaderText = "<DIV style='width:50px;vertical-align:bottom;WRITING-MODE:tb-rl;filter:fliph flipv;'>(" + node.Attributes["code"].Value.Substring(0, 5) + ")" + node.Attributes["name"].Value.Replace(" ", "<BR>") + "(" + node.Attributes["units"].Value + ")"+ str+ "</DIV>";
UltraGridColumn column = new UltraGridColumn(node.Attributes["code"].Value, strHeaderText, ColumnType.NotSet,null);
column.Width = Unit.Pixel(50);
this.MROWebGrid.Columns.Add(column);
}
//***Creating Grid rows for number of days in the month***//
DateTime dtFrom = new DateTime();
XmlNodeList lstDays = doc.SelectNodes("//Root/Section[1]/Parameters/Parameter[1]/day");
for (int i = 0; i < lstDays.Count; i++)
{
this.MROWebGrid.Rows.Add();
this.MROWebGrid.Rows[i].Cells[0].Value = dtFrom.ToString("M/d/yy,ddd");
this.MROWebGrid.Rows[i].Cells[0].AllowEditing = AllowEditing.No;
dtFrom = dtFrom.AddDays(1);
}
//***Creating the footer:**//
foreach (XmlNode node in lstParameter)
{
XmlNode AvgNode = node.SelectSingleNode("//Root/Section[@name=\"" + node.ParentNode.ParentNode.Attributes["name"].Value + "\"]/Parameters/Parameter[@code=\"" + node.Attributes["code"].Value + "\"]/Average");
//similarly max, min and data nodes
System.Text.StringBuilder sbFooterText = new System.Text.StringBuilder();
sbFooterText.Append("<DIV style='width: 50px;TEXT-ALIGN: left;'>");
if(AvgNode.InnerText.Equals("")) sbFooterText.Append(" "); else sbFooterText.Append(AvgNode.InnerText);
sbFooterText.Append("<BR><HR>");
if (MaxNode.InnerText.Equals("")) sbFooterText.Append(" "); else sbFooterText.Append(MaxNode.InnerText);
sbFooterText.Append("<BR><HR>");
if (MinNode.InnerText.Equals("")) sbFooterText.Append(" "); else sbFooterText.Append(MinNode.InnerText);
sbFooterText.Append("<BR><HR>");
if (DataNode.InnerText.Equals("")) sbFooterText.Append(" "); else sbFooterText.Append(DataNode.InnerText);
sbFooterText.Append("</DIV>");
this.MROWebGrid.DisplayLayout.Bands[0].Columns[intIdx].Footer.Caption = sbFooterText.ToString(); ;
intIdx++;
}
Hope this gives a complete picture of how I am rendering the grid. Please help!!