سلام
دوستان یک راه ساده و کوتاه برای چاپ محتویات دیتاگرید توسط استیمول میخوام. دیتا گرید به بانک متصل نیست و توسط کاربر وارد میشه.
مثال هایی رو دیدم اما تقریبا هیچکدوم کارم رو راه ننداخت.
سلام
دوستان یک راه ساده و کوتاه برای چاپ محتویات دیتاگرید توسط استیمول میخوام. دیتا گرید به بانک متصل نیست و توسط کاربر وارد میشه.
مثال هایی رو دیدم اما تقریبا هیچکدوم کارم رو راه ننداخت.
سلام
عزیز جان فکر نکنم دیگه ساده تر و کوتاه تر و خوشگل تر از این نمونه که درست کردم بتونی پیدا کنی
http://uplod.ir/5jqlffru5nbk/dgv_to_stir.rar.htm
کوتاه ومفید تنها در 14 سطر کل گریدتون رو می ریزه تو استیمول
فقط یادت باشه اگه خواستی محیط دیزاین رو داشته باشی اون یه خط مونده به آخر رو فعال کنی
exe برنامتونو اجرا کردم موقع کلیک بر روی چاپ ارور میده
واسه منم مشکل داره !
چیزی بدون dll سراغ نداری ؟ یه کد ساده تر
مرسی
آقا dll ها توی نمونه ای که توی پست 2 گذاشتم هستش بردارین و بذارین توی پوشه dibug نمونه ی پست 5
مرسی دوست عزیز کد رو به شکل زیر تغییر دادم درست شد ممنونم
DataTable table = new DataTable("DGV_Rows");
foreach (DataGridViewColumn column in dataGridView1.Columns)
table.Columns.Add(column.Name, typeof(string));
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
table.Rows.Add();
for (int j = 0; j < dataGridView1.Columns.Count; j++)
{
table.Rows[i][j] = dataGridView1[j, i].Value;
}
}
DataSet Ds = new DataSet();
Ds.Tables.Add(table);
stiReport1.RegData("dt1", Ds);
stiReport1.Show();
برای بقیه دوستان هم توضیح میدم که انشالله به دردشون بخوره .
توی قسمت design Report نرم افزار استیمول هم روی قسمت Data Sources کلیک راست میکنیم و و New Data Sources رو انتخاب میکنیم و گزینه Data from DataSet.DataTable رو انتخاب میکنیم و یک نام میدیم مثل dt1 و تمامی فیلد های دیتاگرید رو اونجا add میکنیم .
آخرین ویرایش به وسیله vapa_71 : شنبه 01 تیر 1392 در 01:31 صبح
ابتدا گریدتون رو پر می کنین حالا هر جور که دوست داشتین من دوتا تکس گذاشته بودم با یه باتن
بعد در رویداد یه باتن دیگه که مخصوص ارسال به گزارش بود اینطوری نوشته بودم که :
ابتدا یه دیتاتیبل درست می کردم و تیبل رو با یه حلقه از محتوای ردیفهای ایجاد شده در گرید پر می کردم اینطوری :
DataTable table = new DataTable("DGV_Rows");
foreach (DataGridViewColumn column in dataGridView1.Columns)
table.Columns.Add(column.Name, typeof(string));
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
table.Rows.Add();
for (int j = 0; j < dataGridView1.Columns.Count; j++)
{
table.Rows[i][j] = dataGridView1[j, i].Value;
}
}
بعدش هم یه دیتاست و دیتاتیبل درست شده ربط می دادم به این دیتا ست
DataSet Ds = new DataSet();
Ds.Tables.Add(table);
ودر نهایت گزارش موجود در پوشه dibug پروژه رو به این دیتاتیبل وصل می کردم همین
Stimulsoft.Report.StiReport stiReport1 = new Stimulsoft.Report.StiReport();
stiReport1.Load(System.Windows.Forms.Application.S tartupPath + @"\TestReport.mrt");
stiReport1.RegData(table);
// stiReport1.Design();
stiReport1.Show();
اینهم کل کدهای مربوط به همون باتن :
private void button2_Click(object sender, EventArgs e)
{
DataTable table = new DataTable("DGV_Rows");
foreach (DataGridViewColumn column in dataGridView1.Columns)
table.Columns.Add(column.Name, typeof(string));
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
table.Rows.Add();
for (int j = 0; j < dataGridView1.Columns.Count; j++)
{
table.Rows[i][j] = dataGridView1[j, i].Value;
}
}
DataSet Ds = new DataSet();
Ds.Tables.Add(table);
Stimulsoft.Report.StiReport stiReport1 = new Stimulsoft.Report.StiReport();
stiReport1.Load(System.Windows.Forms.Application.S tartupPath + @"\TestReport.mrt");
stiReport1.RegData(table);
// stiReport1.Design();
stiReport1.Show();
}
آخیش
dll هائی که گفتین هم داخل debug هستن اما بعد از زدن دکمه گزارش باز ارور میده
در واقع فقط این خطو stiReport1.RegData(table); به این stiReport1.RegData("dt1", Ds); تغییر دادین دیگه؟
این کارو کردم باز رو قسمت show ارور گرفت
من استیمول نصب ندارم فقط dll ها هستند تا اجرا شه و اون تغییرات توی دیزاین استیمولو نمیتونم انجام بدم لطفا آخرین نسخه استیمولو بدین نصب کنم . vs2012 نصبه
اینم نشد !
داداش از این لینک دانلودش کن
http://soft98.ir/software/programmin...-Ultimate.html
اینم راهنمای نصب و ک-ر-ک https://barnamenevis.org/showthread.p...15#post1728015
برای انجام تنظیماتش باید نرم افزار رو نصب کنی اون کدی که من گذاشتم کار میده اگه خواستی بگو نمونه برنامشو بذارم واست البته اول استیمول رو نصب کن
دوستان من از این کد استفاده کردم اما یه مشکل داره کسی میتونه بگه اشکال کجاست
وقتی 1 بار دکمه چاپ رو میزنم مشکلی نیست اما اگه داخل دیتاگرید تغیر (اضافه یا کم کردن) انجام بشه گزارش تغییر نمیکنه و همون گزارش دوباره واسه چاپ میاد
DataTable table = new DataTable("DGV_Rows");
foreach (DataGridViewColumn column in dataGridView1.Columns)
table.Columns.Add(column.Name, typeof(string));
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
table.Rows.Add();
for (int j = 0; j < dataGridView1.Columns.Count; j++)
{
table.Rows[i][j] = dataGridView1[j, i].Value;
}
}
DataSet Ds = new DataSet();
Ds.Tables.Add(table);
stiReport1.RegData("dt1", Ds);
stiReport1.Show();
مشکل حل شد 1 خط کد کم داشت اینم اصلاح شده ی کد
DataTable table = new DataTable("DGV_Rows");
foreach (DataGridViewColumn column in dataGridView1.Columns)
table.Columns.Add(column.Name, typeof(string));
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
table.Rows.Add();
for (int j = 0; j < dataGridView1.Columns.Count; j++)
{
table.Rows[i][j] = dataGridView1[j, i].Value;
}
}
DataSet Ds = new DataSet();
Ds.Tables.Add(table);
stiReport1.Load("Report.mrt");
stiReport1.RegData("dt1", Ds);
stiReport1.Show();