فرستادن یک سطر از دیتاگرید به reportviewer
سلام.
بدون دیتاگرید،در reportviewer اطلاعات رکورد اول جدول نمایش داده میشود.
برای اینکه بتونم رکورد دیگری ررو انتخاب کنم،باید در فرم دیگه دیتاگرید ویو بذارم،و با انتخاب یک سطر از اون دیتاگرید اطلاعات اون سطر رو بفرستم به فرمی که report viewer داره.
چطور میتونم با انتخاب یک سطر از دیتاگریدویو در form1 اطلاعات اون رو به form2 که reportviewer داره بفرستم؟
نقل قول: فرستادن یک سطر از دیتاگرید به reportviewer
کاری که من کردم این بود.
یه فرم با دیتاگرید گذاشتم و یه دکمه.
برای دکمه این رو نوشتم:
ssesion f = new ssesion();
f.seid = dataGridView1.SelectedRows[0].Cells[5].Value.ToString();
f.ShowDialog();
و تو فرمی که Report viewer بود این رو :
private void reportViewer1_Load(object sender, EventArgs e)
{
SqlConnection cnc = new SqlConnection(ConfigurationManager.ConnectionStrin gs["c"].ConnectionString);
cnc.Open();
string sqlcommand = "SELECT * from session WHERE seid=@seid";
SqlCommand cmd = new SqlCommand(sqlcommand, cnc);
DataTable dt = new DataTable();
dt.Load(cmd.ExecuteReader());
cmd.ExecuteNonQuery();
cnc.Close();
reportViewer1 = dt;
}
فقط نمیدونم برای خط آخر چجوری dt رو بریزم تو report viewer !
اصلا راهی که رفتم درسته؟اگر درسته چطور باید خط آخر رو اصلاح کنم؟
ممنون میشم راهنمایی کنید.
نقل قول: فرستادن یک سطر از دیتاگرید به reportviewer
نقل قول: فرستادن یک سطر از دیتاگرید به reportviewer
نقل قول:
نوشته شده توسط
Beginner67
لطفا راهنمایی کنید.
توی فرم گزارش دیگه نمی خواد کوئری بزنی .....
یعنی همون فرم اولی ردیف یا ردیفهای انتخابی رو بریز داخل یه دیتاتیبل و پاس بده به گزارش و کار گزارش رو توی همون فرم اولی تموم کن
بعد گزارش رو که آماده کردی به کنترل reportViewer موجود در فرم دوم اختصاص بده و فرم دوم رو show کن :لبخند:
1 ضمیمه
نقل قول: فرستادن یک سطر از دیتاگرید به reportviewer
بیا این هم نمونه همون چیزی که بالا براتون توضیح دادم ...ردیفهای انتخابی با چک باکس مشخص می شن
نقل قول: فرستادن یک سطر از دیتاگرید به reportviewer
ممنون بابت راهنماییتون.
کاری که شما فرمودین رو انجام دادم ولی سطر اول دیتاگرید رو نمایش میده.
کاری که انجام دادم رو توضیح میدم ممنون میشم ببینید کجا رو اشتباه رفتم.
در فرم list_form دیتاگرید و یه دکمه گذاشتم فقط دیتاگرید رو به صورت دستی پر نکردم.
جدول رو روی فرم درگ کردم و دیتاگرید خودش رو حذف کردم و یک دیتاگرید جدید به فرم اضافه کردم.(اصلا به صورت دستی کدی ننوشتم و اینکه چک باکس هم نذاشتم،چون نمیخوام چیزی تیک بخوره).
کدی که توی دکمه گذاشتم اینه :
private void button1_Click(object sender, EventArgs e)
{
ssesion f = new ssesion();
DataRow datarow = null;
DataTable dt = new keyriyeDataSet.sessionDataTable();
foreach (DataGridViewRow rowa in dataGridView1.Rows)
{
if (Convert.ToBoolean(rowa.Cells[0].Value) == true)
{
datarow = ((DataRowView)rowa.DataBoundItem).Row;
dt.ImportRow(datarow);
}
}
f.reportViewer1.LocalReport.DataSources.Clear();
f.reportViewer1.LocalReport.ReportEmbeddedResource = "kheyrie.rtp_sesstion.rdlc";
Microsoft.Reporting.WinForms.ReportDataSource dataset = new Microsoft.Reporting.WinForms.ReportDataSource("Dat aSet1", dt);
f.reportViewer1.LocalReport.DataSources.Add(datase t);
f.reportViewer1.LocalReport.Refresh();
f.reportViewer1.RefreshReport();
f.reportViewer1.SetDisplayMode(DisplayMode.PrintLa yout);
f.ShowDialog();
}
و البته این هم کد load همین فرم ک دیتاگرید رو پر میکنه.
this.sessionTableAdapter.Fill(this.keyriyeDataSet. session);
در فرم ssestion هم که reportviewer هست این کد :
private void ssesion_Load(object sender, EventArgs e)
{
this.reportViewer1.RefreshReport();
}
private void ssesion_FormClosing(object sender, FormClosingEventArgs e)
{
reportViewer1.LocalReport.ReleaseSandboxAppDomain( );
}
ولی موقع اجرا در فرم ssestion سطر اول دیتاگرید رو نشون میده کاری به اینکه من کدوم سطر رو انتخاب میکنم نداره.
چطور باید سطر مورد نظرم رو به reportviewer بفرستم؟البته بدون چک باکس.
نقل قول: فرستادن یک سطر از دیتاگرید به reportviewer
نقل قول:
چطور باید سطر مورد نظرم رو به reportviewer بفرستم؟البته بدون چک باکس.
اگه دقت کنین در آخر حلقه ای که سطر های گرید ویو رو می شمره یه دونه عبارت ، Row هست اونو بایستی بکنی SelectedRows
در پائین اون سطر هم یه خط کد هست که ردیفهایی که چک باکس شون تیک خورده رو چک می کنه ، اونو هم بردار ...... همین ....
یعنی با تغییراتی که گفتم بایستی کدهای مربوط به حلقه این شکلی بشه :
foreach (DataGridViewRow rowa in dataGridView1.SelectedRows)
{
//if (Convert.ToBoolean(rowa.Cells[0].Value) == true)
//{
datarow = ((DataRowView)rowa.DataBoundItem).Row;
dt.ImportRow(datarow);
//}
}
با این کار هر چند تا سطر رو که های لایت کنی و دکمه چاپ رو بزنی توی گزارش نشون می ده
نقل قول: فرستادن یک سطر از دیتاگرید به reportviewer
خیلی لطف کردید درست شد.
ممنونم بابت وقتی که گذاشتید.