PDA

View Full Version : سوال: مشکل در پرینت از دیتاگرید با نمونه برنامه codeproject



Sal_64
یک شنبه 08 دی 1387, 19:13 عصر
سلام


من برای پرینت از دیتاگرید از این (http://www.codeproject.com/KB/grid/DataGridPrinter.aspx?bmkres=success) نمونه برنامه استفاده کردم
استفاده از اون بسیار سادست

Sal_64
دوشنبه 09 دی 1387, 20:53 عصر
.................

rostamkhani
سه شنبه 10 دی 1387, 00:30 صبح
سلام
احتمالا مشکل در نام جدول یا نام ستونها است در کد تغییر سایز ستونهای گرید

hdv212
سه شنبه 10 دی 1387, 01:45 صبح
اگر از دستور try-catch استفاده کردید، اون رو بردارید و برنامه رو خط به خط اجرا کنید (با زدن کلید F11) و ببینید آیا تغییرات شما اعمال میشه یا نه، مقادیر ذخیره شده در متغیرها رو در runTime بررسی کنید و ببینید آیا مقدار مورد نظر رو در خود دارند یا خیر.
بهترین راه حل این چنین مشکلاتی، Trace کردن برنامه در حالت Debug است.
در ضمن، کامپوننت های جدیدتر و بهتری هم برای پرینت گرفتن از DataGridView وجود داره، مثل این یکی :
Printing a DataGridView on DotNet Framework (http://www.codeproject.com/KB/grid/GridDrawer.Net.aspx)
و یا اینا (http://www.codeproject.com/info/search.aspx?artkw=datahridviewprint&sbo=kw).
موفق باشید

SMRAH1
سه شنبه 10 دی 1387, 09:29 صبح
سلام

چیزی از کد برنامه ننوشتی!
من هم با دوستوم جناب hdv212 (http://barnamenevis.org/forum/member.php?u=14084) موافقم.بهتره اول مطمئن بشی از کجا (کدام خط و کدام دستور) ،رفتار مورد نظر رخ نمی دهد.بعد در موردش بحث کنیم.

موفق باشید

abi_sarab
سه شنبه 10 دی 1387, 18:25 عصر
کسی می تونه نمونه ای که گذاشتن رو به gridview تغییر بده؟ چون این مال گریده و روی گرید ویو کار نمی کنه.
Sal_64 خودت می تونی این کار رو بکنی اگه این کار رو بکنی کلی دعات می کنم.
مرسی

Sal_64
سه شنبه 10 دی 1387, 19:04 عصر
سلام

اولا از همه دوستان ممنونم


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


بهترین راه حل این چنین مشکلاتی، Trace کردن برنامه در حالت Debug است.با شما صد در صد موافقم

و اما برای اطمینان بیشتر
این مورد رو روی دستابیس NorthWind امتحان کردم و در کمال تعجب روی اون بدون هیچ موردی (حتی با select های تو در تو و ....) درست جواب داد

البته برای اطمینان یه دیتابیس جدید ساختم و تا اونجایی که بلد بودم و در propertis دیتابیس NorthWind مواردی رو دیدم ، دیتابیس رو شبیه به اون ایجاد کردم
حتی table ها (2 تا) رو هم همینطور البته به جز وابستگی ها و fk و..

اما دوباره به مشکل پست 1 و2 همین لینک برخورد کردم


چیزی از کد برنامه ننوشتی!این نمونه کد رو ببینید
کاملا درست کار میکنه البته با دیتابیس NorthWind

...........
لطفا ببینید و بررسی کنید

اگر احتیاج به اسکریپت دیتابیس که ساختم و NorthWind هم بود ،بگید اینجا بزارم

در صورت امکان با دیتابیس ها ی روی سیستم خودتون هم امتحان کنید


یه مورد :
sql من 2005 ,و دقیق خاطرم نیست این NorthWind رو از کجا دانلود کردم




Sal_64 خودت می تونی این کار رو بکنی اگه این کار رو بکنی کلی دعات می کنم.خوشحال میشم ولی اگه بتونی با دیتاگرید عوضش کنی
کار خیلی ساده تر میشه


خب

بازم ممنونم

Sal_64
چهارشنبه 11 دی 1387, 21:59 عصر
...................

SMRAH1
یک شنبه 15 دی 1387, 12:10 عصر
سلام

من برنامه رو رو هم با NorthWise و هم با یک جدول که خودم ساختم تست کردم.هم موقع پیش نمایش چاپ و هم چاپ (مجازی در Microsoft Office Document Image Writer) که در هر دو حالت ،با هر دو جدول مشکلی که شما فرمودید (تغییر عرض جدول به مقدار 100 در حالت چاپ) مشاهده نشد.با این حال Source خودتون رو با پایگاه ساخته شده خودم که تست کردم می گذارم تا شما هم تست کنید.

اگر احتمالا اشتباهی کردم ،لطفا یادآوری کنید تا بهتر بتونم کمکتون کنم.

موفق باشید

Sal_64
پنج شنبه 19 دی 1387, 12:30 عصر
سلام

با تشکر از دوستان

جناب SMRAH1 با بررسی کدها

ایراد رو متوجه شدند و لطف کردند در پیغام خصوصی جواب دادند

جواب رو با نقل قول از ایشون اینجا میگذارم
...............

مشکل برنامه در کد نويسي آن است.هر گاه تعداد رديفهاي جواب (رکورد ها) يک و کمتر از آن باشد اين مشکل را خواهيد داشت.در کلاس Grid ،متد SetHeaders ، شرط

if (Cells.GetUpperBound(0)>0)
را به

if (Cells.GetUpperBound(0)>=0)

تغيير دهيد تا برنامه درست عمل کند
GetUpperBound براي يک آرايه 1 عضوي عدد 0 را بر مي گرداند

.................

Sal_64
پنج شنبه 17 بهمن 1387, 14:02 عصر
سلام

به همه مهندسین عزیز

با تشکر از دوستانی که در حل مسئله فوق کمک کردند
//
در نمونه برنامه فوق در هر فرم که احتیاج به پرینت گرفتن باشه
باید کلی کد رو دوباره نویسی کرد
چطور امکان داره که استفاده از کدهای موجود در این پروژه جهت پرینت رو بهینه کرد
یعنی تمام کدهای مشترک رو در کلاسی ریخت
و در زمان لزوم با دادن پارامترهای مورد نیاز به کلاس ، فقط اون کلاس رو فراخوانی کرد

//
سعی کردم کلاسی برای اینکار طراحی کنم که با مشکل روبه رو شد :افسرده:

لطفا کد ضمیمه رو ببینید :قلب:
چطور باید اون رو تصحیح کرد؟؟

با تشکر

hdv212
جمعه 18 بهمن 1387, 23:12 عصر
فایل پروژه تون رو نتونستم باز کنم، این پیغام رو میده :

---------------------------
Microsoft Visual Studio
---------------------------
Unable to read the project file 'test_print2.csproj'.

C:\Documents and Settings\Dell\My Documents\test_print2\test_print2.csproj(77,11): The imported project "C:\Microsoft.CSharp.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.
---------------------------
OK

Sal_64
شنبه 19 بهمن 1387, 09:53 صبح
سلام

تشکر

اطلاع ندارم ایراد از کجاست:متفکر:
برای اطمینان بیشتر
دوباره اون رو ضیمیه کردم


با تشکر

Sal_64
دوشنبه 21 بهمن 1387, 16:51 عصر
سلام

دوستان کلاس رو بررسی کردند

به نظر شما ایراد کجاست:متفکر:

و چطور باید اون رو حل کرد ؟؟؟:افسرده:



با تشکر

alirzn
دوشنبه 21 بهمن 1387, 22:57 عصر
از کنترل telerik استفاده کن. خیلی راحته

amironline
سه شنبه 22 بهمن 1387, 07:23 صبح
ميشه يكم در مورد کنترل telerik توضيح بدين؟ براحتي ميشه از ديتاگريد پرينت گرفت؟

H2K
سه شنبه 22 بهمن 1387, 09:50 صبح
سلام دوست من اميد ورم كارتو اين راه بندازه:لبخندساده:

Sal_64
سه شنبه 22 بهمن 1387, 09:51 صبح
سلام


از کنترل telerik استفاده کن. خیلی راحته

استفاده از این نمونه کد هم بسیار سادست

و کلاس ساخته شده احتمالا ایراد کوچکی داره
که از چشم من دور مونده:افسرده:

تشکر