PDA

View Full Version : چگونه اطلاعات datagrid رو در ReportViewer برای چاپ انتقال دهیم ؟



imanx7
چهارشنبه 02 اردیبهشت 1394, 12:21 عصر
سلام
من یه برنامه دارم که وقتی کاربر اطلاعات خودش رو سرچ کرد نتیجه اش توو دیتاگرید نمایش داده میشه ، حالا میخوام که بدونم چجوری میشه اطلاعاتی که داخل دیتاگرید هست رو به ReportViwer پاس بدم تا ازش چاپ کنم ، اینم بگم که پروژه م رو با LinQ دارم مینویسم
ممنون از راهنمایی هاتون

khokhan
چهارشنبه 02 اردیبهشت 1394, 19:54 عصر
بیا بالا .....
یه متد برای پرکردن دیتاتیبل داخل دیتاست (از محتوای دیتاگرید ):


public DataTable DataGridView2DataTable(DataGridView dgv)
{

DataSet1.DataTable1DataTable dt = new DataSet1.DataTable1DataTable();

for (int i = 0; i < dgv.Rows.Count-1; i++)
{
DataRow dRow = dt.NewRow();
foreach (DataGridViewCell cell in dgv.Rows[i].Cells)
{
dRow[cell.ColumnIndex] = cell.Value;
}
dt.Rows.Add(dRow);
}
return dt;
}

بعد از همون متد یه نمونه می سازی و می فرستی به گزارش :


DataTable dt1 = DataGridView2DataTable(dataGridView1);
string exeFolder = (Path.GetDirectoryName(Application.StartupPath)).S ubstring(0, (Path.GetDirectoryName(Application.StartupPath)).L ength - 3);
string reportPath = Path.Combine(exeFolder, @"Report1.rdlc");
ReportDataSource datasource = new ReportDataSource("DataSet1", dt1);
f2.reportViewer1.LocalReport.DataSources.Add(datas ource);
f2.reportViewer1.LocalReport.ReportPath = reportPath;
f2.reportViewer1.RefreshReport();

armeshi
پنج شنبه 03 اردیبهشت 1394, 10:35 صبح
سلام
از کاربر سوال میکنم چندتا دانش آموز داری؟ مثلا میگه 20 تا
حالا بهترین راه برای ثبت مشخصات دانش آموزاش چیه؟ ميشه از datagrid استفاده کرد ؟ چطوری بعد از وارد کردن تعداد دانش آموز، به همون مقدار هم سطر واسه ثبت مشخصات داشته باشم
شما چی پیشنهاد میدین؟:خجالت:

ممنون

armeshi
پنج شنبه 03 اردیبهشت 1394, 20:40 عصر
كسي نيست جواب بده؟

khokhan
پنج شنبه 03 اردیبهشت 1394, 22:02 عصر
كسي نيست جواب بده؟

خیلی عذرمی خوام این تاپیک محل مناسبی برای سوالتون نبود ....

به هر حال می تونین از دیتا گرید استفاده کنین یعنی ابتداد به تعداد مورد نیاز برای گرید ستون در نظر بگیرین و موقع اجرای برنامه به گریدتون اضافه کنی
بعد با یه دستور ساده می شه به تعداد دل خواه ردیف اضافه کرد


public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
DataGridViewColumn d1 = new DataGridViewTextBoxColumn();
DataGridViewColumn d2 = new DataGridViewTextBoxColumn();
DataGridViewColumn d3 = new DataGridViewImageColumn();


d1.HeaderText = "نام";
d2.HeaderText = "نام خانوادگی";
d3.HeaderText = "تصویر";


dataGridView1.Columns.AddRange(d1, d2, d3);
}

private void Form1_Load(object sender, EventArgs e)
{

}

private void button1_Click(object sender, EventArgs e)
{
int mala = int.Parse(textBox1.Text.ToString());
dataGridView1.Rows.Clear();
dataGridView1.Rows.Add(mala);
}
}


اما اگه من جای شما بودم خودم تیکت طراحی می کردم

armeshi
شنبه 05 اردیبهشت 1394, 10:45 صبح
میشه در مورد تیکت توضیح بدین یا نمونه ای قرار بدین؟
ممنون

Todco.ir
شنبه 05 اردیبهشت 1394, 11:06 صبح
درواقع printticket کلاسی است که معمولا از این کلاس برای کنترل پرینت و حتی خود پرینتر نیز مورد استفاده قرار میگیرد که کار برنامه نویس را راحتتر می کند.