PDA

View Full Version : سوال: نمایش گروه خونی در دیتا گریدویو



mhsmity
یک شنبه 16 تیر 1392, 15:08 عصر
سلام.
چه طوری نحوه نمایش این رو درست کنم.
علامث + یا - سمت راست اسم خونی قرار بگیرد.

erfan_urchin
یک شنبه 16 تیر 1392, 17:19 عصر
خب تو جدول دیتابیس بنویس +A یا +AB اینجام همونجوری که میخوای نمایش داده میشه دیگه
الان احتمالا تو جدول نوشتی A+ که تو گریدویو داره اینجوری نمایش میده

veniz2008
یک شنبه 16 تیر 1392, 17:29 عصر
سلام.
اگر در جدول علامت مثبت و منفی رو در سمت راست ذخیره کردید ولی در گرید برعکس نشون میده احتمال زیاد بخاطر اینه که خاصیت RightToLeft فرم یا گرید رو بر روی Yes قرار دادید. کافیه اونو بر روی No قرار بدید.

khokhan
یک شنبه 16 تیر 1392, 17:41 عصر
سلام.
چه طوری نحوه نمایش این رو درست کنم.
علامث + یا - سمت راست اسم خونی قرار بگیرد.
این اتفاق زمانی می افته که خاصیت RightToLeft فرم یا گرید رو بر روی Yes قرار داده باشین

یه راه حلی براتون پیشنهاد می کنم که فقط حال کنین :لبخند::چشمک:

این راه حل رو با گرید متصل به بانک هم امتحان کردم جواب داده

mhsmity
یک شنبه 16 تیر 1392, 18:24 عصر
از همگی دوستان ممنونم ولی
آقای "erfan_urchin (http://barnamenevis.org/member.php?267050-erfan_urchin)"
نه داخل دیتا بیس به صورت +Ab ذخیره شده طبق تصویر ولی درست نمایش داده نمیشه.

آقای "veniz2008 (http://barnamenevis.org/member.php?155296-veniz2008)"
فرایش شما کامل صحیح هستش به خاطر خاصیت RightToLeft که Yes هستش ولی بنده نمی تونم این خاصیت رو برابر No کنم و باید حتما Yes باشه.

آقای "khokhan (http://barnamenevis.org/member.php?131732-khokhan)"
کدهای شما استاد خودم رو امتحان کردم ولی متاسفانه به جواب درستی نرسیدم.
یعنی یکم ظاهر رو دیتا گریدویو رو بهم می ریزه دیگه گروه خونی وسط چین نیست .
باید چی کارکنم که وسط چین بشه؟

آقایون یه راحل داره وقتی گروه خونی رو به صورت معکوس ذخیره می کنم مشکلم حل می شه یعنی دیتا گریدویو درست نمایش می ده ولی خودتون می دونید که این یه کلک مرغابی محسوب میشه
اگه راه حلی به ذهنتون رسید بنده رو راهنمای کنید.

mhsmity
یک شنبه 16 تیر 1392, 19:16 عصر
در ضم برای چاپ این دیتا گریدویو هم از کلاس زیر DGVPrinter.rar استفاده می کنم که همین مشکل فوق رو با چاپ شدن گروه خونی دارم.

اگه امکانش هست این کلاس رو چه جوری باید اصلاح کرد.

veniz2008
یک شنبه 16 تیر 1392, 19:24 عصر
برای وسط چین کردن اون سلول میتونید از کد زیر استفاده کنید :

dataGridView1.Columns[0].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;

khokhan
یک شنبه 16 تیر 1392, 19:29 عصر
از همگی دوستان ممنونم ولی


آقایون یه راحل داره وقتی گروه خونی رو به صورت معکوس ذخیره می کنم مشکلم حل می شه یعنی دیتا گریدویو درست نمایش می ده ولی خودتون می دونید که این یه کلک مرغابی محسوب میشه
اگه راه حلی به ذهنتون رسید بنده رو راهنمای کنید.

بفرما این هم برای گرید متصل به دیتابیس در حالت راست به چب

عزیز شما بایستی اون قسمتی که مربوط به ستون مورد نظر بود رو بر اساس گرید خودتون مقدار دهی می کردین که نکردین :لبخند:

mhsmity
یک شنبه 16 تیر 1392, 19:58 عصر
برای وسط چین کردن اون سلول میتونید از کد زیر استفاده کنید :

dataGridView1.Columns[0].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;

این کد رو باید کجا بنویسم
در فرم لود یا همون متد CellPainting
ما که هر جا نوشتیم نشد
اگه جای خاصی هست لطفا بفرماید؟

mhsmity
یک شنبه 16 تیر 1392, 20:01 عصر
بفرما این هم برای گرید متصل به دیتابیس در حالت راست به چب

عزیز شما بایستی اون قسمتی که مربوط به ستون مورد نظر بود رو بر اساس گرید خودتون مقدار دهی می کردین که نکردین :لبخند:

عزیزم ممنون
بنده کدای شما رو متوجه شدم با روش شما علامت + رو به سمت راست می برم ولی دیگه گروه خونی مرکزو وسط سلول نیست.
یعنی کد زیر کار نمی کنه
dataGridView1.Columns[0].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;

khokhan
سه شنبه 18 تیر 1392, 17:34 عصر
در ضم برای چاپ این دیتا گریدویو هم از کلاس زیر DGVPrinter.rar استفاده می کنم که همین مشکل فوق رو با چاپ شدن گروه خونی دارم.

اگه امکانش هست این کلاس رو چه جوری باید اصلاح کرد.

نمونه قبلی رو با یه کلاس دیگه :لبخند: البته فوق پیشرفته :قهقهه: می گذارم ببین اینه اونی که همینه :لبخند:

mhsmity
چهارشنبه 19 تیر 1392, 02:01 صبح
نمونه قبلی رو با یه کلاس دیگه :لبخند: البته فوق پیشرفته :قهقهه: می گذارم ببین اینه اونی که همینه :لبخند:

سلام دست شما درد نکنه.
ولی این کدها هم نیاز بنده رو برطرف نکرد می خوام Ab درست وسط سلول باشه
اگه دقت کنید کدهای شما سمت چپ و بالا قرار گرفته .
کد زیر Ab رو می تونم وسط بیارم ولی بازم بالا هستش.
if (e.ColumnIndex == 2 && e.RowIndex >= 0)
{
e.PaintBackground(e.CellBounds, true);
TextRenderer.DrawText(e.Graphics,
e.FormattedValue.ToString(), e.CellStyle.Font, e.CellBounds,
e.CellStyle.ForeColor, TextFormatFlags.HorizontalCenter );
e.Handled = true;
}

شما می تونید این کلاس پرینت رو درستش کنید که در پرینت گرفتن مثل کلاس پرینت خودتون عمل کنه من برای چاب تصاویر و چک باکس های دیتاگریدویو مجبورم از این کلاس استفاده کنم
درضمن یه فیلد شماره حساب هم درام اون رو هم برعکس چاپ می کنه

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

hessam2003
چهارشنبه 19 تیر 1392, 02:07 صبح
سلام.
از امکانات گرید برای جهت رشته ها استفاده کنید.
اگر از ویژوال استادیو 2012 استفاده می کنید گرید را edit کنید و فیلد مورد نظرتونو انتخاب کنید و اون را راست چین کنید.

khokhan
چهارشنبه 19 تیر 1392, 11:08 صبح
سلام دست شما درد نکنه.
ولی این کدها هم نیاز بنده رو برطرف نکرد می خوام Ab درست وسط سلول باشه
اگه دقت کنید کدهای شما سمت چپ و بالا قرار گرفته .
کد زیر Ab رو می تونم وسط بیارم ولی بازم بالا هستش.
[CSHARP] if (e.ColumnIndex == 2 && e.RowIndex >= 0)
{
e.PaintBackground(e.CellBounds, true);
TextRenderer.DrawText(e.Graphics,
e.FormattedValue.ToString(), e.CellStyle.Font, e.CellBounds,
e.CellStyle.ForeColor, TextFormatFlags.HorizontalCenter );
e.Handled = true;

سلام عزیز راجع به مشکل اول پیشنهاد من اینه که کد بالایی رو به این صورت تغییر بدین یعنی یه تغییر جزئی دادم درست شد


if (e.ColumnIndex == 2 && e.RowIndex >= 0)
{
e.PaintBackground(e.CellBounds, true);
TextRenderer.DrawText(e.Graphics,
e.FormattedValue.ToString(),e.CellStyle.Font, e.CellBounds,
e.CellStyle.ForeColor, TextFormatFlags.HorizontalCenter | TextFormatFlags.VerticalCenter);
e.Handled = true;
}

اما رجع به کلاس پرینت بهتره کدی رو که برای دکمه پرینت ونحوه استفاده از کلاس رو هم بگذاری تا یه امتحانی بکنیم

mhsmity
چهارشنبه 19 تیر 1392, 14:43 عصر
اما رجع به کلاس پرینت بهتره کدی رو که برای دکمه پرینت ونحوه استفاده از کلاس رو هم بگذاری تا یه امتحانی بکنیم

دستون درد نکنه با راهنمایی های شما مشکل نحوه نمایش دو فیلد شماره حساب و گروه خونی در دیتا گریدویو کاملا حل شد.
حالا میمونه چاپش .
کدهای دکمه پرینت:

DGVPrinter printer = new DGVPrinter();
printer.PrintPreviewDataGridView(dgv);

mhsmity
جمعه 12 مهر 1392, 01:44 صبح
سلام.
کسی نبود این کلاس رو درستش کنه ؟
ممنون میشم.:قلب::خجالت::لبخند:

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

mhsmity
جمعه 12 مهر 1392, 14:29 عصر
سلام.
کسی نبود این کلاس رو درستش کنه ؟
ممنون میشم.:قلب::خجالت::لبخند:

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

از دوستان ممنوم.
اخرش شد بعضی از ستون ها رو برای خودم سفارش سازی کنم . شما هم استفاده کنید.

ولی مشکل فونت فارسی داره ؟

private void printcolumnheaders(Graphics g, ref float pos, PageDef pageset)
{
.
.

if (col.Name == "blood" || col.Name == "numHesab")
{
StringFormat finalformat2 = new StringFormat();
//finalformat2.FormatFlags = StringFormatFlags.FitBlackBox;
finalformat2.FormatFlags = StringFormatFlags.LineLimit;
finalformat2.LineAlignment = StringAlignment.Center;
finalformat2.Alignment = StringAlignment.Center;
DataGridViewCellStyle colstyle2 = colstyle;
colstyle2.Alignment = DataGridViewContentAlignment.MiddleCenter;
DrawCell(g, cellprintarea, colstyle2, cell, startlocation, finalformat2, lines);
}
else
{
if (col.Name == "Radif")
{
StringFormat finalformat2 = finalformat;
finalformat2.LineAlignment = StringAlignment.Center;
finalformat2.Alignment = StringAlignment.Center;
DrawCell(g, cellprintarea, colstyle, cell, startlocation, finalformat, lines);
}
else
DrawCell(g, cellprintarea, colstyle, cell, startlocation, finalformat, lines);
}
.
.
}

mhsmity
شنبه 04 آبان 1392, 22:59 عصر
سلام کسی نبود.
MHSmity