Print Grid from ArrayList of objects

Stimulsoft Reports.NET discussion
Post Reply
aspen
Posts: 4
Joined: Sun Jul 09, 2006 6:33 pm

Print Grid from ArrayList of objects

Post by aspen »

Hello,

I am trying to figure out how to do something similar to the print grid example except I do not have a dataview. My grid is bound to an arraylist of objects.

It looks like I would need to change the following 2 lines:

Databand.DataSourceName

DataText.Text.Value

Do you have an example that uses a custom object and builds the report on the fly?

Thanks,

Aspen
Vital
Posts: 1278
Joined: Fri Jun 09, 2006 4:04 am

Print Grid from ArrayList of objects

Post by Vital »

You can see following sample:

Code: Select all

public class BusinessEntity
		{
			private string name;
			public string Name
			{
				get
				{
					return name;
				}
				set
				{
					name = value;
				}
			}

			private string alias;
			public string Alias
			{
				get
				{
					return alias;
				}
				set
				{
					alias = value;
				}
			}

			public BusinessEntity(string name, string alias)
			{
				this.name = name;
				this.alias = alias;
			}
		}

		private ArrayList list = null;

		private void FillBusinessObject()
		{
			list = new ArrayList();
			list.Add(new BusinessEntity("name1", "alias1"));
			list.Add(new BusinessEntity("name2", "alias2"));
			list.Add(new BusinessEntity("name3", "alias3"));
		}

		private void PrintDataGrid(DataGrid sender)
		{
			StiReport report = new StiReport();
			report.ScriptLanguage = StiReportLanguageType.CSharp;

			//Add data to datastore
			report.RegData("MyList", list);
			
			//Fill dictionary
			report.Dictionary.Synchronize();
			StiPage page = report.Pages.Items[0];

			//Create HeaderBand
			StiHeaderBand headerBand = new StiHeaderBand();
			headerBand.Name = "HeaderBand";
			page.Components.Add(headerBand);

			//Create Dataaband
			StiDataBand dataBand = new StiDataBand();
			dataBand.DataSourceName = "MyList";
			dataBand.Height = 0.5f;
			dataBand.Name = "DataBand";
			page.Components.Add(dataBand);

			StiDataSource dataSource = report.Dictionary.DataSources[0];

			//Create texts
			Double pos = 0;
			Double columnWidth = StiAlignValue.AlignToMinGrid(page.Width / dataSource.Columns.Count, 0.1, true);
			int nameIndex = 1;
			foreach (StiDataColumn column in dataSource.Columns)
			{
				if (column.Name == "_ID" || column.Name == "_Current")continue;

				//Create text on header
				StiText headerText = new StiText(new RectangleD(pos, 0, columnWidth, 0.5f));
				headerText.Text.Value = column.Name;
				headerText.HorAlignment = StiTextHorAlignment.Center;
				headerText.Name = "HeaderText" + nameIndex.ToString();
				headerText.Brush = new StiSolidBrush(Color.LightGreen);
				headerText.Border.Side = StiBorderSides.All;
				headerBand.Components.Add(headerText);

				//Create text on Data Band
				StiText dataText = new StiText(new RectangleD(pos, 0, columnWidth, 0.5f));
				dataText.Text.Value = "{MyList." + column.Name + "}";
				dataText.Name = "DataText" + nameIndex.ToString();
				dataText.Border.Side = StiBorderSides.All;

				//Add highlight
				dataText.HighlightCondition.Brush = new StiSolidBrush(Color.CornflowerBlue);
				dataText.HighlightCondition.TextBrush = new StiSolidBrush(Color.Black);
				dataText.HighlightCondition.Condition.Value = "(Line & 1) == 1";
				
				//uncomment this line for VB.Net
				//dataText.HighlightCondition.Condition.Value = "(Line And 1) = 1";

				dataBand.Components.Add(dataText);

				pos += columnWidth;

				nameIndex ++;
			}
			//Create FooterBand
			StiFooterBand footerBand = new StiFooterBand();
			footerBand.Height = 0.5f;
			footerBand.Name = "FooterBand";
			page.Components.Add(footerBand);

			//Create text on footer
			StiText footerText = new StiText(new RectangleD(0, 0, page.Width, 0.5f));
			footerText.Text.Value = "Count - {Count()}";
			footerText.HorAlignment = StiTextHorAlignment.Right;
			footerText.Name = "FooterText";
			footerText.Brush = new StiSolidBrush(Color.LightGreen);
			footerBand.Components.Add(footerText);

			//Render without progress bar
			report.Render(false);

			report.Show();

			//For checking created report you can uncomment this line
			//report.Design();
		}
You can get sample project using this link

Thank you.
aspen
Posts: 4
Joined: Sun Jul 09, 2006 6:33 pm

Print Grid from ArrayList of objects

Post by aspen »

This is perfect! Thank you.
Post Reply