PDA

View Full Version : سوال: خطا در گزارش گیری با سی شارپ



morteza271
جمعه 25 شهریور 1390, 23:12 عصر
سلام دوستان.
من کد زیر رو برای چاپ یک DataGridView نوشتم ولی خطا میده.
البته من این کد رو از داخل Sample های خود استیمول برداشتم ولی برای من خطا میده،در حالی که در خود sample خطا نمیده!!!

این کد :
//DataView dataView = (DataView)dgvList.DataSource;
DataTable dt = (DataTable)dgvList.DataSource;
StiReport report = new StiReport();
report.ScriptLanguage = StiReportLanguageType.CSharp;

//Add data to datastore
report.RegData("view", dt);

//Fill dictionary
report.Dictionary.Synchronize();
StiPage page = report.Pages.Items[0];

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

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

//Create texts
Double pos = 0;
Double columnWidth = StiAlignValue.AlignToMinGrid(page.Width / dt.Columns.Count, 0.1, true);
int nameIndex = 1;
foreach (DataColumn column in dt.Columns)
{
//Create text on header
StiText headerText = new StiText(new RectangleD(pos, 0, columnWidth, 0.5f));
headerText.Text.Value = column.Caption;
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 = "{view" + dt.TableName + "." + Stimulsoft.Report.CodeDom.StiCodeDomSerializator.R eplaceSymbols(column.ColumnName) + "}";
dataText.Name = "DataText" + nameIndex.ToString();
dataText.Border.Side = StiBorderSides.All;

//Add highlight
StiCondition condition = new StiCondition();
condition.BackColor = Color.CornflowerBlue;
condition.TextColor = Color.Black;
condition.Expression = "(Line & 1) == 1";
condition.Item = StiFilterItem.Expression;
dataText.Conditions.Add(condition);

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(true);
report.Show();

اینم تصویر خطا :
75376

در ضمن دوستان من از نسخه تریال استیمول استفاده میکنم ممکنه به این خاطر باشه!!!

با تشکر

morteza271
شنبه 26 شهریور 1390, 11:04 صبح
از دوستان که کسی جواب ما رو نداد!!!!!!
خودم کلی ور رفتم تا اینکه بالاخره به جواب رسیدم.
مشکل از همون خط اول بود.وقتی کد رو به صورت زیر تغییر دادم درست شد:

DataTable dt = (DataTable)dgvList.DataSource;
DataView dataView = dt.DefaultView;
StiReport report = new StiReport();
report.ScriptLanguage = StiReportLanguageType.CSharp;

//Add data to datastore
report.RegData("view", dataView);

//Fill dictionary
report.Dictionary.Synchronize();
StiPage page = report.Pages.Items[0];

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

//Create Dataaband
StiDataBand dataBand = new StiDataBand();
dataBand.DataSourceName = "view" + dataView.Table.TableName;
dataBand.Height = 0.5f;
dataBand.Name = "DataBand";
page.Components.Add(dataBand);

//Create texts
Double pos = 0;
Double columnWidth = StiAlignValue.AlignToMinGrid(page.Width / dataView.Table.Columns.Count, 0.1, true);
int nameIndex = 1;
foreach (DataColumn column in dt.Columns)
{
//Create text on header
StiText headerText = new StiText(new RectangleD(pos, 0, columnWidth, 0.5f));
headerText.Text.Value = column.Caption;
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 = "{view" + dataView.Table.TableName + "." + Stimulsoft.Report.CodeDom.StiCodeDomSerializator.R eplaceSymbols(column.ColumnName) + "}";
dataText.Name = "DataText" + nameIndex.ToString();
dataText.Border.Side = StiBorderSides.All;

//Add highlight
StiCondition condition = new StiCondition();
condition.BackColor = Color.CornflowerBlue;
condition.TextColor = Color.Black;
condition.Expression = "(Line & 1) == 1";
condition.Item = StiFilterItem.Expression;
dataText.Conditions.Add(condition);

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(true);
report.Show();