+2 امتیاز

باعرض سلام و احترام خدمت اساتید گرامی

من داخل دیتاگریدویوم ی تیبل دارم ک اطلاعات رو از دیتابیس می گیره و نشون میده و چون، هم داخل CellFormatting کد نوشتم و هم دوتا دکمه اضافه کردم، حالا میخواستم همه ی ستون هارو ب غیر از این دو ستون چاپ کنم.

ولی نمیخوام اطلاعاتم رو از دیتابیس بگیرم چون تو CellFormatting تغییرشون دادم، میخوام همین اطلاعات رو چاپ کنم.

(ب عبارتی همه ستون ها ب غیر 3تا ستون آخر باید چاپ بشن)

و البته باید چون فیلدها زیاد هستن باید صفحه رو بصورت افقی تنظیم کرد.

و اینکه برنامه رو با LINQ نوشتم.(C#)

دوتا عکس هم از دیتاگریدویو و ستون هاش میزارم.

ممنون میشم راهنمایی بفرمایید ک باید چیکار کنم ؟

باتشکر فراوان از شما

بسته شده

1 پاسخ

+3 امتیاز
 
بهترین پاسخ
سلام میتونی اطلاعات داخل گریدویو رو داخل دیتاتیبل قرار بدی بعد اون به ریپورت خودتون پاس بدید
ممنون میشم بگید چطور این کارو انجام بدم ؟
توسط (174 امتیاز) 3 9 23

میتونید یک شی از کلاس datatable بسازید و ستونهای مورد نیازتون رو بهش اضافه کنید و اطلاعات دیتاگرید ویو رو به دیتاتیبل انتقال بدید.

مثال:

            DataTable dataTable = new DataTable();
            dataTable.Columns.Add("Name");
            dataTable.Columns.Add("Number");
            dataTable.Columns.Add("Price");
            dataTable.Columns.Add("TotalPrice");
            foreach(DataGridViewRow row in dataGridView1.Rows)
            {
                dataTable.Rows.Add(row.Cells["CName"].Value.ToString(), row.Cells["Number"].Value.ToString(), row.Cells["Price"].Value.ToString(), row.Cells["TotalPrice"].Value.ToString());
            }

برای ارسال دیتاتیبل هم این لینک میتونه کمکتون کنه خط 10 - 14 البته اگر اشتباه نکرده باشم.

توسط (2,595 امتیاز) 5 15 90

ممنونم از شما بابت پاسخگوییتون.

ولی من کلا با استیمول کار نکردم و تو نت هم گشتم همش داخل Ado.net گفته بودن چطور باید باهاش کار کرد.

چندتا فیلم ک دیدم اول stiReport1 رو به فرم اضافه میکرد بعد تو Choose Data Sources دیتا تیبل رو انتخاب میکردم و بعد از تو Design Report تنظیمش میکرد، و بعد داخل کلیک دکمه تقریبا چنین کدی مینوشت:

stiReport1.RegData(DT.Employee);
            stiReport1.Show();

ولی الان برای من داخل قسمت Choose Data Sources هیچ تیبلی نیست ک انتخابش کنم و درنتیجه تو دیزاین چیزی نیست !

(همینطوری هم ک بالا گفته بودم پروژم رو با LINQ نوشتم)

لطفا بفرمایید ک مشکل از کجاس ؟

باتشکر فراوان

توسط (174 امتیاز) 3 9 23
سلام.

من با لینک کار نکردم،  از نرم افزار گزارشگیری کریستال ریپورت استفاده کردم و همونطور که شما گفتید یک جدول طراحی کردم و فیلدها در کریستال ریپورت نمایش داده شد، دیتاتیبلی دیگری ایجاد کردم با ستونهای همنام دیتاتیبل قبلی و دیتاتیبل جدید رو به کریستال ریپورت فرستادم و گزارشگیری درست انجام شد. یعنی مهم نام ستونها بود که باید با نام فیلدها یکسان باشد، فرقی نمیکند کدام دیتاتیبل است. امتحان کنید  که آیا امکان داره مقادیر دیتاگرید ویو رو به دیتاتیبلی که هنگام ایجاد گزارش درست کردید ارسال کنید ؟ (احتمالش خیلی زیاده اینکار انجام بشه).

یه نکته دیگه اینکه پیشنهاد میدم به جای linq to sql  به سمت EF برید(راجبش تحقیق کنید).

میدونم جوابم کامل نیست اما گفتم نظر بدم شاید مفید واقع شد.
توسط (2,595 امتیاز) 5 15 90
بسیار ممنون از شما بابت پاسخگویی.

یعنی دیگه کسی نبود یکم واضح تر توضیح بده که داخل LINQ چطور باید با استیمول گزارش گیری کنم ؟!
توسط (174 امتیاز) 3 9 23

بلاخره بعد از کلی سرچ ی آموزش پیدا کردم :
گزارش گیری در LINQ کلا با Ado.net فرق داره.
http://goo.gl/p1i5a8
 

ی نکته هم بگم برا کسایی ک بعدا این مشکل براشون پیش میاد:

اگه مثه داخل فیلم کد بنویسید، اگه فارن کی تو جدولتون داشته باشید و تو ویو چند جدول رو ادغام کرده باشید، توی گزارش ب جای فیلدهای فارن کی براتون عدد میزنه و اسمش رو نمیزنه ک برای رفع این مشکل می تونید کدهاتون رو اینطور بنویسید:(ب جای همه اون کدها، این کدهارو تو کلیک دکمه بنویسید)

 private void button1_Click(object sender, EventArgs e)
        {
            DataTable table = new DataTable();

            table.Columns.Add("Firstname");
            table.Columns.Add("Lastname");
            table.Columns.Add("BirthDate");
            table.Columns.Add("ClassName");
            table.Columns.Add("Job");

            foreach (DataGridViewRow dgv in dataGridView1.Rows)
            {
                table.Rows.Add(dgv.Cells[1].Value,
                    dgv.Cells[2].Value,
                    dgv.Cells[4].Value,
                    dgv.Cells[5].Value,
                    dgv.Cells[15].Value
                    );
            }

            StiReport report = new StiReport();
            report.Load(@"Report.mrt");
            report.RegData(table);
            report.Show();
          
        }

 

ویرایش شده توسط
توسط (174 امتیاز) 3 9 23
پس بالاخره مشکلت حل شد :)) موفق باشی
توسط (2,595 امتیاز) 5 15 90
سوال جدید

2,337 سوال

2,871 پاسخ

3,725 دیدگاه

3,924 کاربر

دسته بندی ها

...