PDA

View Full Version : آموزش: گزارشگیری مستقیم از DataGridView



xminxmin
سه شنبه 27 فروردین 1392, 12:26 عصر
پیرو پیام های خصوصی و تاپیک هایی که در این خصوص زده شد گفتم شاید بهتر باشه به همه مشکلات در خصوص گزارشگیری مستقیم از DataGridView در این تاپیک خاتمه بدم.
این برنامه رو خودم نوشتم. یه نمونه مناسب جهت یادگیری. خیلی ساده ولی مفید!
دوستان سوالی داشتند در خدمت هستم

102907

mokhtar_r
چهارشنبه 28 فروردین 1392, 07:21 صبح
سلام
لطفا سمپل ارسال از تکس باکس را هم بگذارید .

xminxmin
چهارشنبه 28 فروردین 1392, 09:56 صبح
سلام
لطفا سمپل ارسال از تکس باکس را هم بگذارید .

سلام دوست عزیز دو راه دارید:
*راه اول:
تو قسمت Dictionary گزارشاتون روی System Variables کلیک راست کنید
New Variable رو انتخاب کنید
مقادیر دلخواه را پر کنید . مثلا : Name : Var1 --- Alias: Var1 --- Type : String
بعد OK
به این ترتیب یک متغیر از نوع String بنام Var1 ایجاد میشود
حالا تو کد برنامه تون و قبل از نمایش گزارشتون مقدار TextBox مورد نظرتون را به Var1 ارسال کنید

stiReport1.Dictionary.Variables["Var1"].Value = TextBox1.Text;
ودر گزارشتون از Var1 همانند یک فیلد استفاده کنین . Var1 را به روی گزارشتون بکشید

*راه دوم:
مانند نمونه برنامه پست#1 مثل DataGridView با Textbox ها رفتار کنید. مقادیر Textbox ها رو درون DataTable بریزید و جدول رو چاپ کنید

amir3321
شنبه 07 اردیبهشت 1392, 14:55 عصر
با سلام راستش این کارو قبلا استاد اسماعیل خواه داخل 1001 نکته در سی شارپ توضیح دادند با stimulsoft

public static void PrintDataGrid(DataGridView sender, bool Landscape, string ReportTitle)
{
DataTable dt = GetDataGridViewDataSource(sender as DataGridView);

foreach (DataColumn dc in dt.Columns)
{
dc.ColumnName = ReplaceSpaceWithUnderline(dc.ColumnName);
}
DataView dataView = dt.DefaultView;
StiReport report = new StiReport();
report.ScriptLanguage = StiReportLanguageType.CSharp;


report.RegData("view", dataView);

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


//Create Report Title Band
StiReportTitleBand rt = new StiReportTitleBand();
rt.Height = 1.5f;
rt.Name = "ReportTitleBand";
StiText st = new StiText(new RectangleD(0, 0, page.Width, 1f));
st.Text.Value = ReportTitle;
st.HorAlignment = StiTextHorAlignment.Center;
st.Name = "TitleText1";
st.Font = new Font("B Mitra", 16f);
rt.Components.Add(st);
page.Components.Add(rt);


//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;


for (int i = dataView.Table.Columns.Count - 1; i != -1; i--)
{
DataColumn column = dataView.Table.Columns[i];


//Create text on header
StiText headerText = new StiText(new RectangleD(pos, 0, columnWidth, 0.5f));
headerText.Text.Value = ReplaceUnderLineWithSpace(column.Caption);
// 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);
headerText.Font = new Font("Tahoma", 8f);



//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;
dataText.HorAlignment = StiTextHorAlignment.Center;
dataText.Font = new Font("Tahoma", 8f);
//dataText.WordWrap = true;
//dataText.CanGrow = true;


//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";
//footerBand.Border = new StiBorder(StiBorderSides.All, Color.Black, 1, StiPenStyle.Solid);

//page.Components.Add(footerBand);


////Create text on footer
//StiText footerText = new StiText(new RectangleD(0, 0, page.Width, 0.5f));
//footerText.Text.Value = "تعداد = {Count()-1}";
//footerText.HorAlignment = StiTextHorAlignment.Right;
//footerText.Name = "FooterText";
//footerText.Brush = new StiSolidBrush(Color.WhiteSmoke);
//footerText.Font = new Font("Tahoma", 8f);

// footerBand.Components.Add(footerText);

//Render without progress bar
report.Render(true);
report.Show();
}



و بصورت معمولی در این پست (http://barnamenevis.org/showthread.php?95001-1001-%D9%86%DA%A9%D8%AA%D9%87-%D8%AF%D8%B1-%D8%B3%DB%8C-%D8%B4%D8%A7%D8%B1%D9%BE&p=593955&viewfull=1#post593955) قرار دادند