PDA

View Full Version : تغییر ترتیب محتوای datagridview در هنگام چاپ



afi_program
شنبه 27 خرداد 1396, 19:39 عصر
سلام.
امیدوارم طاعات و عباداتتون مورد قبول درگاه حق قرار گرفته باشه.

من یک گریدویو دارم که دارم با استفاده از Printdocument چاپش میکنم. ولی مشکل اینجاست که من محتوای سطرهای گریدویو را از هرطرف میخونم و برای چاپ ارسال میکنم در هر صورت به یک شکل ثابت چاپ میشن. منظورم اینه که ترتیب داده های چاپ شده با داده های نمایش داده شده توی گرید دقیقا برعکس هم هستن.!!!

ترتیب خوندنم از گرید هم برعکس کردم ولی باز هم به همون ترتیب قبل چاپ میشه!!!:گریه::گریه::عصبانی++::ع صبانی++::عصبانی++:
لطف میکنید اگر راهنمایی کنید.


موفق باشید

رامین مرادی
یک شنبه 28 خرداد 1396, 09:40 صبح
شما میتونید با خود کوئری و با Order By جدول برگشتی از دیتا بیس رو مرتب سازی کنید. یا اینکه هنگام مرتب سازی جدول در داخل برنامه بجای اینکه دیتا سورس دیتا گرید رو بفرستی برای چاپ کل دیتا گریدت رو که مرتب هست رو پیمایش کن و بریز داخل دیتا تیبل بعد دیتا تیبل رو بفرست برای چاپ.


select id,Name,Family
from tblPerson
Order By Name ASC|DESC

afi_program
یک شنبه 28 خرداد 1396, 09:45 صبح
دوست عزیز ممنون از پاسخ ولی یا من متوجه جواب شما نشدم یا شما متوجه مشکل من.
کوئری درسته. نمایش توی گرید ویو درسته. برای چاپ هم خونه به خونه گرید را میخونم و ارسال میکنم برای چاپ. ولی چیزی که چاپ میشه اصن به ترتیب کوئری و گرید و اینا ربطی نداره!!!

مشکل اینه.

موفق باشید

رامین مرادی
یک شنبه 28 خرداد 1396, 09:48 صبح
میتونید کد و عکس خروجیتونو بزارید؟

afi_program
یک شنبه 28 خرداد 1396, 09:58 صبح
این کد
//Loop till all the grid rows not get printed
while (iRow <= dataGridView1.Rows.Count - 1)
{
DataGridViewRow GridRow = dataGridView1.Rows[iRow];
//Set the cell height
iCellHeight = GridRow.Height + 5;
int iCount = 0;
//Check whether the current page settings allows more rows to print
if (iTopMargin + iCellHeight >= e.MarginBounds.Height + e.MarginBounds.Top)
{
bNewPage = true;
bFirstPage = false;
bMorePagesToPrint = true;
break;
}
else
{
if (bNewPage)
{
//Draw Header
e.Graphics.DrawString(PageHeaderString,
new Font(dataGridView1.Font, FontStyle.Bold),
Brushes.Black, e.MarginBounds.Left,
e.MarginBounds.Top - e.Graphics.MeasureString(PageHeaderString,
new Font(dataGridView1.Font, FontStyle.Bold),
e.MarginBounds.Width).Height - 13);

//////////////////////////Create Date Time for print //////////////////////////////////////////////
DateTime DateTime_1 = new DateTime();
System.Globalization.PersianCalendar c = new System.Globalization.PersianCalendar();
DateTime_1 = DateTime.Now;
string year, day, month;
year = c.GetYear(DateTime_1).ToString();
month = c.GetMonth(DateTime_1).ToString();
day = c.GetDayOfMonth(DateTime_1).ToString();
if (day.Length == 1)
{

day = day.Insert(0, "0");

}
if (month.Length == 1)
{
month = month.Insert(0, "0");
}

string ShamsiDate = year + "/" + month + "/" + day;
String strDate = ShamsiDate + " " + DateTime_1.ToString("hh:mm:ss tt");
////////////////////////////////////////////////////////////////////////

//Draw Date
e.Graphics.DrawString(strDate,
new Font(dataGridView1.Font, FontStyle.Bold), Brushes.Black,
e.MarginBounds.Left +
(e.MarginBounds.Width - e.Graphics.MeasureString(strDate,
new Font(dataGridView1.Font, FontStyle.Bold),
e.MarginBounds.Width).Width) ,
e.MarginBounds.Top - e.Graphics.MeasureString(PageHeaderString,
new Font(new Font(dataGridView1.Font, FontStyle.Bold),
FontStyle.Bold), e.MarginBounds.Width).Height - 13);

//Draw Columns
iTopMargin = e.MarginBounds.Top;
foreach (DataGridViewColumn GridCol in dataGridView1.Columns)
{
if (GridCol.Displayed)
{
e.Graphics.FillRectangle(new SolidBrush(Color.LightGray),
new Rectangle((int)arrColumnLefts[iCount], iTopMargin,
(int)arrColumnWidths[iCount], iHeaderHeight));

e.Graphics.DrawRectangle(Pens.Black,
new Rectangle((int)arrColumnLefts[iCount], iTopMargin,
(int)arrColumnWidths[iCount] , iHeaderHeight));

e.Graphics.DrawString(GridCol.HeaderText,
GridCol.InheritedStyle.Font,
new SolidBrush(GridCol.InheritedStyle.ForeColor),
new RectangleF((int)arrColumnLefts[iCount], iTopMargin,
(int)arrColumnWidths[iCount] , iHeaderHeight), strFormat);
iCount++;
}
}
bNewPage = false;
iTopMargin += iHeaderHeight;
}
iCount = 0;
//Draw Columns Contents
for (int i = 0; i < dataGridView1.Rows[iRow].Cells.Count; i++)
{
if(dataGridView1.Rows[iRow].Cells[i].Displayed)
{
if(dataGridView1.Rows[iRow].Cells[i].Value!=null)
{
// MessageBox.Show(dataGridView1.Rows[iRow].Cells[i].Value.ToString());

e.Graphics.DrawString(dataGridView1.Rows[iRow].Cells[i].Value.ToString(),
dataGridView1.Rows[iRow].Cells[i].InheritedStyle.Font,
new SolidBrush(dataGridView1.Rows[iRow].Cells[i].InheritedStyle.ForeColor),
new RectangleF((int)arrColumnLefts[i],
(float)iTopMargin,
(int)arrColumnWidths[i] , (float)iCellHeight),
strFormat);
}
//Drawing Cells Borders
e.Graphics.DrawRectangle(Pens.Black,
new Rectangle((int)arrColumnLefts[i], iTopMargin,
(int)arrColumnWidths[i], iCellHeight));

}
}
این گرید
145526
اینم خروجی پرینت
145527

رامین مرادی
یک شنبه 28 خرداد 1396, 10:28 صبح
آها شما مشکل راست چین دارید.
شما پروپرتی RightToLeft مربوط به ریپورت ویور رو بکنید yes درست میشه

Mahmoud.Afrad
یک شنبه 28 خرداد 1396, 10:36 صبح
afi_program (http://barnamenevis.org/member.php?53604-afi_program)
در همون پست اول باید سوال و مشکل رو کامل بیان کنید نه اینکه بعد از چند پست تازه مشخص بشه مشکل چی هست!

afi_program
یک شنبه 28 خرداد 1396, 12:18 عصر
afi_program (http://barnamenevis.org/member.php?53604-afi_program)
در همون پست اول باید سوال و مشکل رو کامل بیان کنید نه اینکه بعد از چند پست تازه مشخص بشه مشکل چی هست!

در همون پست اول مشکل را کامل توضیح دادم. دوست عزیزمون متوجه نشدن اون اول و البته هنوز هم اشتباه متوجه شدن. به پست من مربوط نمیشه.


آها شما مشکل راست چین دارید.
شما پروپرتی RightToLeft مربوط به ریپورت ویور رو بکنید yes درست میشه

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

موفق باشید