# برنامه نویسی با محصولات مایکروسافت > برنامه نویسی مبتنی بر Microsoft .Net Framework > مقالات مرتبط با Microsoft .Net Framework >  داونلود کد: اعمال متداول با GridView در ASP.NET 2.0

## Behrouz_Rad

سلام.
در راستای تاپیک *"داونلود کد: اعمال متداول با DataGrid در ASP.NET"* بر آن شدم تا این بار با استفاده از ASP.NET 2.0 و کنترل GridView که جانشین بر حقی برای Data Grid در دومین نسخه از تکنولوژی ASP.NET است، این برنامه را بازسازی کنم.
در این نسخه، دیتابیس برنامه از Access به SQL Server تغییر پیدا کرده.
برنامه تا حد امکان ساده و خوانا نوشته شده.

*تذکر مهم:*
*قبل از اجرای برنامه، فایل "SetupDataBase.bat" موجود در پوشه ی "Setup Database" را اجرا کنید.
این فایل حاوی دستوراتی جهت ایجاد بانک SQL Server برنامه و اعطای مجوز دسترسی به کاربر ASPNET است.*
دستوراتی که در این فایل BAT نوشتم می تونه راهنمای خوبی برای دوستانی که قصد نصب بانک SQL Server بر روی سیستم دیگه ای رو همراه با پروژشون دارن باشه.

موفق باشید.

پ.ن:
نسخه ی دوم برنامه:
https://barnamenevis.org/showpo...65&postcount=2

نسخه ی سوم برنامه:
https://barnamenevis.org/showpo...62&postcount=9

نسخه ی چهارم برنامه:
https://barnamenevis.org/showpo...8&postcount=10

نسخه ی پنجم برنامه:
https://barnamenevis.org/showpo...4&postcount=11

نسخه ی ششم برنامه:
https://barnamenevis.org/showpo...2&postcount=21

نسخه ی هفتم برنامه:
https://barnamenevis.org/showpo...&postcount=111

----------


## Behrouz_Rad

نسخه ی جدید برنامه آماده شد!
در این نسخه، یک Context Menu به Grid View اضافه شده است.

*توجه مهم:*
این Context Menu، هم برای IE و هم برای Firefox به طور کامل عمل می کنه.
این عملکرد کامل، حاصل 3 روز تلاش بی وقفه است. از این رو، شرط استفاده از این Context Menu، باقی گذاشتن کامنت مربوط به Copyright در فایل Menu.js هست.
این Context Menu رو به طور کاملا سفارشی و تنها برای این GridView نوشتم.
لذا در صورت تمایل برای استفاده، عمده تغییرات مورد نیاز،  اصلاح تابع جاوا اسکریپت execMenu هست.

تذکر:
این Context Menu در IE با یک اشکال مواجه هست.
- در صورتی که قسمتی از Context Menu با DropDownList تداخل داشته باشه، اون قسمت در زیر DropDownList قرار میگیره!
در صدد رفع این مشکل هستم. در صورتی که دوستان موفق به رفع این مشکل شدند، خوشحال میشم که راه حلشون رو در اختیار بنده بگذارند.
توجه داشته باشید که مشکل فوق در Firefox وجود ندارد.

Screenshot ای از این Context Menu را در ذیل مشاهده می کنید:




موفق باشید.

پ.ن: در صورتی که مشکلی در ارتباط با Context Menu مشاهده فرمودید، در همین تاپیک اعلام بفرمایید.

----------


## mahboobeh

اول خیلی تشکر میکنم ازتون برای این برنامه 
میشه لطف کنید توضیح بدید این setupDataBase رو چطور درست کردید ؟
و همینطور اون sqlScriptFile رو چون من Script که می سازم رکوردهای بانک رو شامل نمیشه 
ممنون.

----------


## Behrouz_Rad

> میشه لطف کنید توضیح بدید این setupDataBase رو چطور درست کردید ؟


اگر کمی با دستورات اسکریپت نویسی در ویندوز آشنا باشی میبینی که کار سختی نیست!



> اون sqlScriptFile رو چون من Script که می سازم رکوردهای بانک رو شامل نمیشه


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

موفق باشید.

----------


## mehdi000

خیلی خوب  جالب

----------


## irdelta

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

----------


## javad3151

ضمن تشکر از زحمات شما،
شما بیشتر کارها رو (خواندن اطلاعات/ویرایش/حذف ) با کد نویسی انجام دادید در حالیکه در دات نت 2.0 میشه اینها رو بدون کد نویسی انجام داد(ولی شما از این امکانات جدید استفاده نکردید) ، آیا دلیل خاصی داشته؟
این شیوه شما باعث افت سرعت نمیشه(مخصوصا وقتی حجم داده ها بالابره)؟ 
بطور خلاصه این فایلی که شما گذاشتید تفاوت چندانی با فایل قبلی (که با datagrid انجام شده بود) نداره

----------


## Behrouz_Rad

اصولا بشر همیشه در تلاش برای دستیابی آسان تر به خواسته هاشه.
در ASP.NET 1.x، کار با داده ها مستلزم آشنایی با ADO.NET بود. در ASP.NET 2.0، تمامی تلاش مایکروسافت در هر چه درگیر کردن کمتر برنامه نویس با کدهاست.
و به قولی تا 70 درصد موفق به کاهش حجم کدنویسی شده!
امکانات جدید (که DataSource ها نیز شامل اون میشن)، در اکثر موارد توسط برنامه نویسان مبتدی استفاده میشه.
این امکانات، برنامه نویس رو در دقیق شدن در کدهای اجرایی و آگاهی از آنچه که در پشت صحنه اتفاق می افته بی نیاز می کنه. به عبارت دیگه، برنامه نویس رو تنبل می کنه!
برنامه نویس از جزئیات پشت صحنه خبر نداره و نمی تونه دقیقا عامل بروز مشکلات احتمالی رو پیدا کنه.
ضمن اینکه کنترل های آماده، واسطه هایی هستند بین کدی که میشه به معنای واقعی برای اونها نوشت و کاری که انجام میدن.
به عنوان مثال اگر تو در یک SqlDataSource، یک ConnectionString ایجاد می کنی و SqlDataSource به SqlConnection مراجعه می کنه، اما در کدنویسی تو به طور مستقیم با SqlConnection سر و کار داری! پس بحث سرعت در اینجا به نفع....؟

موفق باشید.

----------


## Behrouz_Rad

نسخه ی سوم برنامه آماده شد.

تغییرات در این نسخه شامل *افزودن قابلیت Paging* و *امکان ایجاد خروجی از داده ها با فرمت Excel* است.


*قابلیت Paging*
فعال کردن قابلیت Paging برای GridView با تنظیم خاصیت AllowPaging آن به true میسر خواهد بود.
اما در این حالت، با درخواست هر صفحه، تمامی رکوردها بازیابی خواهند شد و نسبت به صفحه ی درخواستی، رکوردهای مرتبط با آن صفحه نمایش داده می شوند.
مسلما این حالت در زمانی که تعداد رکوردها زیاد باشد، باعث افت قابل ملاحظه ی سرعت و ایجاد سربار بر روی سرور می شود.
راهی که بدین منظور پیشنهاد شده، استفاده از SP است. بدین صورت که از طریق SP، یک جدول موقت در حافظه ایجاد می کنند و از طریق عملیاتی، داده های مورد نظر را استخراج می کنند.
این SP یک SP ثابت در کلیات و متغیر در جزئیات است که برنامه نویس نسبت به نیاز خود می تواند برخی قسمت های آن را تغییر دهد.
از این SP در CS CMS نیز استفاده شده.
در این برنامه نیز این SP با نام spBindGridView وجود دارد.

روالی با نام Fill_Paging_DropDown در برنامه تعریف شده که با دریافت تعداد رکوردها، با تقسیم تعداد رکوردها بر تعداد رکوردهایی که در هر صفحه قصد نمایش آنها را داریم (در این برنامه، تعداد نمایش رکوردها در هر صفحه، 5 رکورد در نظر گرفته شده)، تعداد صفحات را به دست می آورد و با یک حلقه ی For، از 1 تا تعداد صفحات به دست آمده را به یک DropDownList اضافه می کند.
در این حالت، کاربر می تواند با انتخاب شماره ی صفحه، به صفحه ی مورد نظر برود.

توجه داشته باشید که SP یاد شده، یک SP از نوع Batch Query است که در اولین Recordset خود تعداد رکوردها و در دومین Recordset خود، رکوردهای بازیابی شده را نگهداری می کند.

در این برنامه، داده های بازیابی شده در یک DataReader قرار می گیرند. در DataReader این امکان به برنامه نویس داده شده تا با استفاده از متد NextResult، به Recordset بعدی برود.


*قابلیت ایجاد خروجی از داده ها با فرمت اکسل*
در برنامه های کاربردی، معمولا ایجاد خروجی از داده ها با فرمت های مختلف، یکی از اعمال متداولی است که انجام می پذیرد.
یکی از خروجی های محبوب، فرمت اکسل است.
ابزارها و کامپوننت های مختلفی بدین منظور ایجاد شده اند اما یک روش قدرتمند، کارامد و ساده وجود دارد که اکثرا برنامه نویسان از آن غافل هستند!
مجموعه ی Office قابلیت ایجاد تعامل با زبان HTML را به خوبی فراهم کرده.
برنامه هایی همانند Word و Excel، این امکان را به کاربر می دهند تا فایل های خود را در این برنامه ها با قالب HTML ذخیره کرده و مجددا در این برنامه ها فراخوانی کند! (قابل توجه دوستانی که با ایجاد تعامل با فایل های Word در برنامه های خود مشکل دارند)
اگر اندکی در جزئیات کار ریز شوید، انعظاف پذیری فوق العاده ای را در تعامل این برنامه ها با HTML خواهید دید!
به شکل ساده، یک سَنَد Excel ایجاد کرده و پس از پُر کردن چند سلول از آن، از منوی File، گزینه ی Save as Web Page را انتخاب کنید.
پس از ذخیره ی سند، آن را در Notepad یا هر ویرایشگر متنی دیگر باز کنید.
فایل Excel خود را با قالب HTML خواهید دید! حتی می توانید این فایل را در Excel باز کرده و همانند یک فایل Excel واقعی با ان کار کنید!
جالب بود... ما نیز از همین قابلیت برای ایجاد خروجی داده ها با فرمت Excel بهره می بریم.

ساختار HTML توسط ما و از طریق کدنویسی در زمان اجرا ایجاد خواهد شد.
متغیر رشته ای strResult که در روال ExportToExcel تعریف شده در ابتدای کار مقدار زیر را می پذیرد:

strResult = "<html><head><meta http-equiv=Content-Type content=""text/html; charset=windows-1256""><style> .text { mso-number-format:\@; } .xl24 {font-family:Tahoma, sans-serif; mso-font-charset:0;}</style></head><table><tbody>"

پیشنهاد می کنم که charset صفحه و برخی قالب های تعریف شده در تگ style رو بنا به تجربه، همانند مقادیر بالا در نظر بگیرید.
با یک حلقه ی Do While، رکوردهای بازیابی شده را از طریق DataReader استخراج و ساختار HTML را نیز همگام با بازیابی داده ها ایجاد می کنیم. (هر فیلد در یک تگ TD و هر رکورد در یک تگ TR)

پس از پایان کار، نوع محتویات خروجی صفحه را با استفاده از خاصیت ContentType کلاس Response به مقدار ثابت ";application/vnd.xls" تنظیم می کنیم. این کار، به مرورگر خواهد گفت که نوع داده های خروجی از نوع MIME-TYPE اکسل است. در نهایت، با متد Write کلاس Response، داده ها را به مرورگر کاربر ارسال می کنیم.

*نکته مهم:*
پس از پایان کار و مشاهده ی فایل ایجاد شده در Excel، متوجه شدم که حرف "ی" در کلمات به شکل علامت سوال "؟" نمایش داده می شود!
فایل را با Notepad نگاه کردم اما حرف "ی" به درستی نمایش داده میشد!
پس مشکل از حرف "ی" نبود و مشکل را باید در اکسل جستجو می کردم.
یک فایل جدید در اکسل ایجاد کردم و عبارتی را که حاوی حرف "ی" بود در آن تایپ و صفحه را با فرمت HTML ذخیره کردم.
پس از باز کردن فایل در Notepad، متوجه نکته ی جالبی شدم!
اکسل، حرف "ی" را با کد معادل آن یعنی ";1740#&" جایگزین می کند!!!
پس به این نتیجه رسیدم که اگر حروف "ی" را در هنگام ایجاد خروجی با کد ذکر شده جایگزین کنم، مشکل برطرف خواهد شد.
حدسم صحیح بود و با این عمل جایگزینی، حرف "ی" به درستی نمایش داده میشد!

strResult = strResult.Replace("ی", ";1740#&")

_البته کد فوق در اینجا به درستی نشان داده نشده!_

موفق باشید.

----------


## Behrouz_Rad

نسخه ی چهارم برنامه آماده شد.

هنگامی که منبع داده ی بایند شده به GridView خالی از رکورد باشد، GridView نمایش داده نمی شود.
برای رفع این مشکل، GridView ساختاری با نام EmptyDataTemplate معرفی کرده که قالب نمایشی GridView را در زمان خالی بودن منبع داده ی آن مشخص می کند.

همچنین پس از حذف رکوردهای آخرین صفحه از GridView، روال Fill_Paging_DropDown از طریق روال BindGridView فراخوانی می شود.
در این حالت، مقدار Index انتخابی DropDownList برابر با مقدار نگهدارنده ی آن در ViewState تنظیم خواهد شد.
از آنجا که پس از حذف رکوردهای آخرین صفحه، از تعداد صفحات GridView یک واحد کاسته می شود و در ViewState همچنان مقدار صفحه ی آخر وجود دارد، در هنگام تنظیم مقدار Index، کنترل DropDownList با خطایی از نوع ArgumentOutOfRangeException مواجه خواهیم شد!
برای رفع این مشکل، این خطا را Catch کرده و در بلوک Catch، مقدار ViewState را یک واحد کاهش می دهیم و مجددا روال BindGridView را با مقدار جدید ViewState فراخوانی می کنیم.

همچنین در اواخر فایل aspx برنامه، دستورات زیر نوشته شده بودند:

<script language="javascript" type="text/javascript">
     document.getElementById("gridelement").value='<%= GridView1.FooterRow.Cells(6).Controls(1).ClientID %>,<%= GridView1.FooterRow.Cells(5).Controls(0).ClientID %>,<%= GridView1.HeaderRow.Cells(6).Controls(1).Controls(  0).Controls(0).ClientID %>';
</script

این دستورات به منظور شناسایی عناصر GridView برای عملکرد Context Menu مورد نیاز بودند و به تعدادی از عناصر موجود در Header و Footer کنترل GridView مراجعه می کردند.
ساختار GridView در زمان پُر بودن و خالی بودن منبع داده ی آن متفاوت هست. پس مسلما دستورات فوق در زمان خالی بودن GridView با خطا مواجه خواهند شد!
Context Menu ی ایجاد شده تنها در زمان وجود رکورد معنا پیدا خواهد کرد. از این رو، باید به طریقی خالی بودن یا نبودن منبع داده ی GridView را بررسی کنیم و در صورت پُر بودن آن، دستورات فوق را فراخوانی کنیم.
چون صحبت از شرط به میان آمد، این دستورات باید از فایل aspx حذف شوند و در فایل کد برنامه نوشته شوند.
من در روال LoadComplete فرم، با بررسی تعداد رکوردهای GridView (بزرگتر از صفر)، این کار را انجام دادم:

If (GridView1.Rows.Count > 0) Then
    gridelement.Value = GridView1.FooterRow.Cells(6).Controls(1).ClientID & "," & GridView1.FooterRow.Cells(5).Controls(0).ClientID & "," & GridView1.HeaderRow.Cells(6).Controls(1).Controls(  0).Controls(0).ClientID
End If


تغییرات در این نسخه شامل *استفاده از ساختار EmptyDataTemplate* و *بر طرف ساختن 2 باگ فوق* است.

موفق باشید.

----------


## Behrouz_Rad

شاهد پنجمین نسخه ی این برنامه هستید.
امکانات در این نسخه شامل:
1) بهینه سازی کدها
2) نمایش شماره ی صفحه - صفحه ی n از n
3) نمایش تعداد رکوردها
4) ایجاد خروجی با فرمت متنی -Text - txt 
5) ایجاد خروجی با فرمت ورد -Word - doc 
6) دسته بندی فایل های JS و CSS
7) ایجاد امکان مشاهده ی فایل های خروجی بدون ذخیره و در حالت Open
8) ایجاد امکان جستجوی درجا بدون نیاز به Postback صفحه و حذف فیلتر جستجو!

ایده ی امکان جستجوی درجا رو از Firefox برداشت کردم. همون طور که می دونید، گزینه ی "Highlight all" در فایرفاکس، تمامی کلمات یافت شده در صفحه رو با پس زمینه ی زرد رنگ نشون میده.
در قابلیت جدیدی که برای GridView گذاشتم (همون طور که در تصویر می بینید)، کلمات پیدا شده با پس زمینه ی زرد رنگ هایلایت می شوند.
این قابلیت با استفاده از جاوا اسکریپت ایجاد شده و در چشم بر هم زدن، نتیجه ی جستجو رو مشاهده خواهید کرد!
فایل "SearchHighlight.js"، حاوی دستورات جستجو هست.
Comment موجود در این فایل نباید حذف بشه!
متدها به صورت عمومی برای تمامی برنامه ها قابلیت اجرایی دارند و منحصر به این برنامه نیستند.
در این فایل، دو متد اصلی وجود داره:
متد "clearLastesult" برای حذف نتیجه ی جستجوی قبلی.
متد "highlightWord" برای جستجوی عبارت مورد نظر.

دو متد فوق به طریق بازگشتی (Recursive) در تگ های عنصری که برای اونها مشخص میشه حرکت می کنند.

موفق باشید. :لبخند:

----------


## rezaei manesh

با تشکرات فراوان از شما جناب راد 
من از نسخه های قبلی شما که خیلی درس گرفتم و از اونا به عنوان الگو استفاده می کنم 
و این نسخه جدید شما هم که دیگه شاه کاره

----------


## Behrouz_Rad

یکی از دوستان پرسیدند:



> هیچ Namespace ای در برنامه Import نشده! پس به چه شکل از کلاس ها استفاده شده؟


در NET 2.0. این امکان رو دارید تا Namespace ها رو در فایل Web.Config تعریف کنید.
در این برنامه نیز به همین شکل عمل شده.

موفق باشید.

----------


## AspNet

شرمندمون کردین به خدا

----------


## habedijoo

با سلام به همگی . 
قبل از هر چیز از جناب آقای راد بابت به اشتراک گذاشتن تجربیاتشون نهایت تشکر را دارم . 
موقع اجرا، برنامه این Error رو میده : 
Procedure spBindGridView has no parameters and arguments were supplied. 
در واقع spBindGridView هیچ پارامتر ورودی نداره ولی داخل برنامه براش پارامتر ارسال شده . من که نتونستم از نسخه 2 به بعدش رو اجرا کنم .(البته بصورت کامل) در ضمن تمامی اسکریپتهای مربوط به دیتابیس رو هم اجرا کردم . 
آیا بقیه دوستان هم چنین مشکلی رو داشتن .؟ اگر نه لطفا یه نفر منو راهنمایی کنه . 
با تشکر از همگی .

----------


## Behrouz_Rad

دیتابیس قبلی که توسط نسخه های قبلی ایجاد شده رو حذف کن و اسکریپت نسخه ی جدید رو اجرا کن.



> من که نتونستم از نسخه 2 به بعدش رو اجرا کنم .


چون spBindGridView از نسخه ی 3 به بعد دارای پارامتر شد!!!

موفق باشید.

----------


## khz-web1

سلام یک فیلم آموزشی بساز بزار اینجوری نفهمیدیم چی شد
 :افسرده:   :افسرده:   :افسرده:   :افسرده:   :افسرده:   :افسرده:   :افسرده:   :افسرده:

----------


## rezaei manesh

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

----------


## M_Bikdli

سلام
دوست عزیز کارت فوق العاده بود، ولی یک اشکال داره اون هم اینه که تغیر دادن توش و استفاده کردن برای پروژهای دیگه تقریبا غیره ممکنه، اگه میتونی به صورت کلاس درش بیار،به سوالات دیگران هم جواب بدی صواب می بری!!!
باز هم بخاطر اشتراک گذاشتن کارت ممنون

----------


## Behrouz_Rad

> سلام
> دوست عزیز کارت فوق العاده بود،


مرسی.



> ولی یک اشکال داره اون هم اینه که تغیر دادن توش و استفاده کردن برای پروژهای دیگه تقریبا غیره ممکنه، اگه میتونی به صورت کلاس درش بیار،


ایجاد کلاس شرایط خاص خودش رو داره... و اصلا ربطی به این موضوع نداره...
میشه قابلیت هایی که در این تاپیک دیدی رو به صورت امکانات سفارشی به GridView اضافه کرد و اون رو به صورت یک کنترل آماده در آورد اما از اونجایی که هدف من، نحوه ی استفاده کردن از GridView موجود و نه ساخت یک کنترل جدید است، لزومی در انجام این کار نمیبینم.



> به سوالات دیگران هم جواب بدی صواب می بری!!!


سوالات دیگران اگر پیرامون این تاپیک باشه پاسخ داده میشه و اگر مثلا در مورد نحوه ی عملکرد روال RowDataBound باشه ربطی به این تاپیک نداره...!

در مورد *ثواب* هم شما نگران نباش! اونی که قراره ثواب بده و اونی که قدر ثواب بردن رو می دونه، خودش حساب و کتاب دستشه!

و من ا... التوفیق

----------


## Behrouz_Rad

شاهد نسخه ی ششم این پروژه هستید.

امکانات و اصلاحات این نسخه شامل:

1) ارتقای دیتابیس برنامه به SQL Server 2005
2) استفاده از معماری 3 لایه 
3) اضافه کردن امکان مشاهده ی جزئیات به صورت Popup Menu با استفاده از AJAX
4) حل مشکل Export حروف فارسی در Office 2007
5) تغییر تابع Export برای تعیین رنج دلخواه Export رکوردها
6) استفاده از دو SP ی جدید با بهره گیری از امکانات جدید SQL Server 2005 برای Paging و حذف رکوردها
7) درج صحیح شماره ردیف برای صفحات بعدی و رکوردی که قرار هست ثبت بشه.
8) تصحیح نمایش تعداد رکوردها در Context Menu


دیتابیس برنامه به صورت فایل های mdf و ldf و با نام GridView_DB در پوشه ی App_Data قرار داره. دیتابیس رو در Attach، SQL Server 2005 کنید.

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

موفق باشید. :لبخند:

----------


## ali643

تشکر از بهروز راد به خاطر اون تابع خوشگل جداکننده آرایه و همچین GridView خوشگلش
من اون هفته مشکل جدا کردن آرایه رو داشتم با این تابع دیگه میشه هم بهینه کار کرد هم راحت

----------


## parandeh1383

سلام
من با #C کار می کنم. چطور میتونم از این توابع در آن زبان استفاده کنم؟ با تشکر.

----------


## ealireza

اگر یک جا بصورت دمو نصبش میکردی خیلی خوب بود 
موفق باشید

----------


## Behrouz_Rad

> اگر یک جا بصورت دمو نصبش میکردی خیلی خوب بود 
> موفق باشید


فکر خوبیه.
در سایت شخصیه خودم نصبش می کنم. :لبخند: 

مرسی.

----------


## Behrouz_Rad

نسخه ی نمایشی این پروژه در لینک زیر قابل دسترسی است.

http://GridView.CodePro.ir

----------


## javad3151

دمت گرم، خیلی عالیه :تشویق: 
برای "شماره تقاضا"  یه فیلتر بزار که فقط عدد قبول کنه( موارد SQL Injection و کنترل خطا ها و.. رو هم که خودت کاملا مسلطی :لبخند گشاده!: )

----------


## Behrouz_Rad

> دمت گرم، خیلی عالیه
> برای "شماره تقاضا"  یه فیلتر بزار که فقط عدد قبول کنه( موارد SQL Injection و کنترل خطا ها و.. رو هم که خودت کاملا مسلطی)


برای شماره ی تقاضا در این نسخه Validator گذاشته بودم اما چون با یک قسمت ناسازگاری داشت فعلا حذفش کردم...
SQL Injection هم نداره...
کنترل خطاها هم به طور کامل انجام میشه.
فقط نکته ای که هست اینه که من خود پیغام خطا رو به دلیل Demo بودن نمایش میدم اما دوستان باید خطا رو به شکل دیگه هندل کنن.

مرسی.

----------


## zahracomputer

سلام
با تشکر فراوان از زحماتتون و کدهای جالب و مفیدی که در اختیار همگان قرار میدهید.
من این برنامه را با استفاده از یک conventor به C#‎ تبدیل کردم ولی موقع اجرا روی خط
SqlCommand Cmd = newSqlCommand("spBindGridView", Cnn);
این error را میده
Could not find stored procedure 'spBindGridView'.
کلاً spBindGridView و 
spChildPieceList و ... که در دستور sqlcommand نوشته می شوند چه هستند و چگونه باید آن ها را به پروژه اضافه کرد؟
با تشکر

----------


## Behrouz_Rad

فایل نیست! Stored Procedure هست!
فایل GridView_DB رو در Attach، SQL Server 2005 کن.

موفق باشید.

----------


## habedijoo

فقط آژاکسش میمونه . که اونم فکر کنم با پنل مایکروسافت براحتی کارش راه می افته

----------


## fereshtehrahimi

سلام چه طور می تونم برای دیتابیس sql setup  درست کنم درست مثل همونی که شما درست کرده اید با تشکر fereshteh

----------


## Behrouz_Rad

خود شما داری میگی مثل همونی که من درست کردم!
پس از همون ایده بگیر...

----------


## Arian_61

salam. man SQL 2005 ro systemam nasb nist vali hamash error zir o mide 

*An error has occurred while establishing a connection to the server. When connecting to SQL Server 2005, this failure may be caused by the fact that under the default settings SQL Server does not allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)*

----------


## Arian_61

help me plz

----------


## Behrouz_Rad

در مورد این خطا زیاد بحث شده و ارتباطی با این تاپیک نداره.
شاید Connection String رو با سیستمت ست نکردی، شاید...
جستجو کن.

----------


## ashena29

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

----------


## merychobi

سلام
وقتی می خوام نسخه 4 برنامه رو اجرا کنم یعنی قسمت نصب دیتابیس خطا می دهد 
دیتابیس نسخه قبل رو پاک کردم و این رو اجرا کردم ولی خطا داد
اگه ممکنه Storedprocedure مربوط به spbindgrideview رو برام بنویسید چون دیتا بیس اجرا نمی شه 
خطا :
the publisher could not be verified

----------


## Hossein Bazyan

سلام 
دوستان در این آدرس هم میتوانید اطلاعات خوبی به دست بیاورید.

http://quickstarts.asp.net/QuickStar.../gridview.aspx

----------


## abolfazl585

جناب behrouz_rad عزیز:
من کار شما رو دانلود کردم.
جالب بود.
جالبتر اینکه تو 3 روز تمومش کردین.
اگه بررسی کرده باشین وقتی که همه سطرهای دیتا بیس حذف بشن دیگه نمیشه چیزی رو Add کرد یعنی grid مخفی میشه و ContextMenuی هم وجود نداره تا ...
در ضمن وقتی که رکوردی وجود نداره اگه فرم رو دوباره باز کنی Error میده.
 معمولا این مشکل بدلیل اینکه خیلی پیش و پا افتاده هست اکثرا وجود داره.
ولی باز هم تشکر میکنم که این جور مطالب خوب رو ارائه میکنید.

----------


## Behrouz_Rad

نه برادر من... اشتباه می کنی... این برنامه هیچ Bug ای نداره...!
مشکل عدم نمایش GridView در زمان حذف تمامی رکوردها در نسخه ی 4 برطرف شد.
https://barnamenevis.org/showpo...8&postcount=10

نسخه ی نصب شده ی این برنامه رو میتونی در لینک ذیل ببینی:
http://GridView.CodePro.ir

در ضمن، مشکل زیر رفتن Context Menu هم که در پیغام خصوصی اشاره کردی یک باگ در IE هست. من در جایی نگفتم که این مشکل از منه یا از اسکریپتی که نوشتم!

موفق باشی.

----------


## merychobi

ببخشید من نتونستم دیتا بیس نسخه 3 به بعد رو اجرا کنم چون به من خطا میداد 
اگه ممکنه spbindgrideview که دارای پارامتر است رو برای من بذارید

----------


## abolfazl585

> در ضمن، مشکل زیر رفتن Context Menu هم که در پیغام خصوصی اشاره کردی یک باگ در IE هست. من در جایی نگفتم که این مشکل از منه یا از اسکریپتی که نوشتم!


دوست عزیز من نگفتم اشکال از اسکریپت هست.
حتی اگه یادتون باشه گفتم که یاهو هم این مشکل رو داره که مربوط به باگ IE  میشه.
من حتی بهتون گفتم که ListBox هم در IE همین مشکل رو داره.
بهر حال واقعا زحمت کشیدین

----------


## mehrdad201

اقای راد قیل از هر چیز ممنون بابت زحماتی که کشیده اید.

واقعا گرید ویوی زیباییه.

میخواستم بدونم که میشه از گرید ویوتون به همراه دیتابیس SQL 2000 استفاده کرد؟؟؟
مشکلی پیش نمیاد.
من اون فایل کوئری رو در SQL 2000 اجرا کردم. یه دیتابیس ساخت. رفتم توی پروژه شما که دانلود کرده بودم (ورژن شش رو گرفتم) و کوئری استرینگ رو تصحیح کردم (واسه SQL 2000)

اما وقتی پروژه رو اجرا می کنم این پیغام رو میده:
Procedure spBindGridView has no parameters and arguments were supplied.

امکان این هست که بفرمایید برای حل این مشکل دقیقا باید چه کار کرد؟

----------


## Behrouz_Rad

دیتابیس پروژه در نسخه ی 6، SQL Server 2005 هست. ساختار دیتابیس در این نسخه کمی تغییر کرده.

موفق باشید.

----------


## mehrdad201

پس امکان استفادش در sql 2000 نیست. حیف...

یک سوال دیگه آقای راد. در مورد اون پاپ آپ بخش مشاهده. همون جایی کی وقتی روی کلید مشاهده کلیک می کنیم یه پاپ آپ میندازید و جزئیات رو نشون میدید.

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

----------


## Behrouz_Rad

یک Table هست که مکان کلیک رو تشخیص میده و در همون جا ظاهر میشه.
فایل های جاوا اسکریپت مرتبط با این Popup Menu در فایل MenuAjax.js هستند.

موفق باشید.

----------


## mehrdad201

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

اما کماکان این ارور رو میده: 
Procedure spBindGridView has no parameters and arguments were supplied.

به نظر شما کجا ممکنه اشتباه کرده باشم ؟!؟!؟

----------


## Behrouz_Rad

شما از نسخه ی آخر این برنامه (نسخه ی 6) استفاده کن و فایل دیتابیس رو در SQL Server 2005 اتچ کن. مطمئن باش هیچ مشکلی وجود نداره...

موفق باشید.

----------


## Behrouz_Rad

این پروژه رو در CodeProject قرار دادم...

http://www.codeproject.com/useritems...s-gridview.asp

موفق باشید.

----------


## merychobi

سلام 
آقای راد اگه ممکنه یه سری به پیام های خصوصی بزنید راستی اگه ممکنه دوباره خواهش میکنم spbindgridviewبا پارامتر را بذارید

----------


## hamedgh

سلام ممنون از پروژه که گذاشتین می خواستم بپرسم گرته برداری علمی از پروژه شما اشکالی ندارد یا باید با ذکر منبع باشد ممنون از پروژه زیبایتان

----------


## Behrouz_Rad

> سلام ممنون از پروژه که گذاشتین می خواستم بپرسم گرته برداری علمی از پروژه شما اشکالی ندارد یا باید با ذکر منبع باشد ممنون از پروژه زیبایتان


فقط برای فایل های جاوا اسکریپت Comment ها رو حذف نکن.

----------


## sm

آقا بهروز، قبل از هرچیز از زحمات بی مزد و منتتون برای دوستان سپاسگزارم... خدا بهتون عوض خیر بده... خیلی خیلی ممنون
من میخوام تو پروژم از این ابزار استفاده کنم که مشکل دارم... کامل براتون توضیح می دم تا درصورت امکان بتونم با راهنمایی های شما حلش کنم.
من از این گرید توی یه page جدا استفاده کردم و هیچ مشکلی نداشت ولی بعد اومدم از master page استفاده کردم
اولش با جاوا اسکریپت و onload برای تگ body مشکل داشتم که اونا رو حل کردم الان کامل جاوااسکریپ رو میشناسه و اجرا میکنه ولی توی نمایش گرید به مشکل برخوردم اونم اینکه :
1- اول که فرم لود میشه context menu رو بالای گرید نشون میده
2- وقتی روی سطری راست کلیک میکنم بازم منو بالای گرید هست و نمیاد روی سطر جاری ونمیتونم روی سطرای منو حرکت کنم
نگفته نمونه که با اینکه اولش منو رو بالای گرید نشون میده ولی وقتی روی گرید کلیک میکنم منو پنهان میشه هرچند جاش بالای گرید خالی میمونه
اینم رو باید بگم که بقیه جاوااسکریپتها که مربوط به رنگی کردن سطرهای گرید در زمان حرکت روشونه کامل کار میکنه و فقط با context menu مشکل داره

حالا اومدم به جای استفاده از master page از iframe استفاده کردم که مشکل حل شد ولی ترجیح میدم از masterpage استفاده کنم .. ممنون میشم راهنماییم کنین

----------


## Behrouz_Rad

Context-Menu در ابتدا نمایش داده نمیشه و خصوصیات خودش رو از کلاس contextMenus در فایل CSS به ارث میبره...
تشخیص دلیل مشکلت آسون نیست...

----------


## sm

خوب... یعنی نمیشه همراه با masterpage استفاده کرد؟
اگه نشه پیشنهادتون برای جایگزینی اون همون iframe هست یا چیز دیگه؟

موفق باشید

----------


## hamedgh

سلام 
باز از پروژه زیبایتان ممنون 
 این  Schema دیتا ستتان  را می شود ارائه کنید تا بهتر روند کار را درک کنیم  چون من نمی خواهم کپی برداری کنم می خواهم یکی مثلش را خودم   با سی شارپ بنویسیم فقط می  خواهم به درک کاملی از پروژه برسم تا راحت هر مدلی را که خواستم پیاده سازی کنم

----------


## Behrouz_Rad

> خوب... یعنی نمیشه همراه با masterpage استفاده کرد؟
> اگه نشه پیشنهادتون برای جایگزینی اون همون iframe هست یا چیز دیگه؟
> 
> موفق باشید


نگفتم که نمیتونی از Master Page استفاده کنی!
پیشنهادم همون Master Page هست + کمی دقت برای بر طرف کردن مشکلت.

موفق باشید.

----------


## Behrouz_Rad

> این Schema دیتا ستتان را می شود ارائه کنید تا بهتر روند کار را درک کنیم چون من نمی خواهم کپی برداری کنم می خواهم یکی مثلش را خودم با سی شارپ بنویسیم فقط می خواهم به درک کاملی از پروژه برسم تا راحت هر مدلی را که خواستم پیاده سازی کنم


Schema ی دیتاست چیه دیگه؟
اگر دسته بندی کلاس ها و متدهای اونها مد نظرت هست که VS 2005 خودش این امکان رو از طریق گزینه ی View Class Designer (یک همچین چیزی) فراهم کرده.

موفق باشید.

----------


## ar_monti@

با تشکر از شما 
من این برنامه رااجرا میکنم اما خطای زیر رامیدهد:
Cannot open database "GridView_DB" requested by the login. The login failed. Login failed نام سرور for user  چه تغییری در کانکشن استرینگ بایستی بوجود آورم.
ممنون

----------


## Behrouz_Rad

پارامتر server رو برابر با نام server ات قرار بده.
کاربر ASPNET رو در SQL Server به لیست کاربران مجاز دسترسی به دیتابیس اضافه کن.

موفق باشید.

----------


## el_abdollahi

سلام
میدونم جای این سوال توی تالار اس-کیو-ال هست . ولی میشه بگین توی اسکریپت مربوط به دیتابیس نسخه 2000 چه جوری داده ها رو هم insert میکردین ؟

----------


## Behrouz_Rad

فایل Script تولید شده رو با Notepad باز کردم و با دستور INSERT مقداری داده ی پیش فرض رو در اسکریپت نوشتم.

موفق باشید.

----------


## ehsan_zanganeh

با سلام 

با تشکر از زحمات شما

تمامی مثال ها بر این اساس بود که اطلاعات از پایگاه داده فراخوانی می شود .

می خواستم ببینم آیا می شه ما اطلاعات را به یک GridView بصورت سطری وارد کنیم و در نهایت اون GridView رو درون دیتابیس درج کنیم

----------


## Behrouz_Rad

> با سلام 
> 
> با تشکر از زحمات شما
> 
> تمامی مثال ها بر این اساس بود که اطلاعات از پایگاه داده فراخوانی می شود .
> 
> می خواستم ببینم آیا می شه ما اطلاعات را به یک GridView بصورت سطری وارد کنیم و در نهایت اون GridView رو درون دیتابیس درج کنیم


فکر می کنم اشتباه Reply کردی!
در حال حاضر هم همین کار انجام میشه!

----------


## maisam57

اقا من #c کار میکنم خواهش میکنم اگخ ممکنه بگید که چطوری از توابعش استفاده کنم

----------


## Behrouz_Rad

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

موفق باشید.

----------


## yahya3004

واقعا دست شما درد نکنه. میشه منو یه راهنمائی کنی که من برای استفاده از Context menu  شما به تنهائی چه کار باید انجام بدهم؟؟؟ البته اگه شما اجازه استفاده از اون رو می دهید

----------


## Behrouz_Rad

فایل Menu.js و Default.aspx رو بررسی کن. باید به جاوا اسکریپت مسلط باشی.
Comment های فایل js رو نباید حذف کنی.

موفق باشید.

----------


## mk88km

با سلام 
زمان اجرای برنامه به من پیغام میده که :
 "An error has occurred while establishing a connection to the server.  When connecting to SQL Server 2005, this failure may be caused by the fact that under the default settings SQL Server does not allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)"
چه کار کنم؟

----------


## raravaice

> زمان اجرای برنامه به من پیغام میده


این مشکل ربطی به این برنامه نداره Connection String رو درست کن.

موفق باشید

----------


## m110_110

با سلام و خسته نباشید
من برنامه هات رو گرفتم خیلی عالی بود
ولی متأسفانه از کد vb سر در نمی آورم
ممنون می شم اگر بتونی به کد سی شارپ هم بدی
ممنون

----------


## Behrouz_Rad

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

----------


## Nasim_m

با عرض سلام و خسته نباشید خدمت جناب راد
من می خواهم در برنامه ام قسمتی مانند جستجویی که برای گرید گذاشته اید قرار دهم 
برای این کار SearchHighlight.js را به پروژه ام اضافه کردم 
اما تنها زمانی که تکست باکس (txtSearch) خالی باشد پیغام خطا نمایش میدهد و در مواقع دیگر هیچ اتفاقی نمی افتد
آیا باید قسمت دیگری را هم به پروژه ام اضافه کنم یا تغییر خاصی لازم دارد؟
اگر یک کم توضیح در مورد این قسمت بدهید کلی دعای خیر پشت سرتان است.

----------


## sepideh_om

سلام دست شما درد نکنه با این sample خیلی خوبتون
اما یک سوال دارم
همان طور که گفته بودید من namespace های صفحه ام رو به web.config اضافه کردم ولی اگر اونها رو از صفحه ام حذف کنم ایراد میگره تنظیم خاص دیگه ای نداره؟؟

----------


## dr_rezaaee

ببخشین من اینو برای table خودم مورد استفاده قرار میدم اما موقعی که میخوام یک ستون بیشتر رو به نمایش بذارم با همون templatefield متاسفانه اون قسمت empty لود میشه !!! اشکال کار کجاست ؟ متشکر

----------


## hesam_a110

درود بر شما
آقای راد من همه تاپیک را نتونستم بخونم ولی چیزس که در پست دوم گفته بودید طی تجربه ای که کردم این مورد در IE7 نیست و موردی نداره این یکی از تفاوت هایی است که بین IE6 , IE7 هست یه تفاوت دیگه توی این دو IE مورد استفاده آجاکس هستش که در موقع که یک DIV را تیره شدن بک گراند استفاده می کنیم و opacity را کم می کنیم در IE6 کم رنگ می شود ولی در IE7 خیر 
پیروزو نیک باشید

----------


## Behrouz_Rad

> من می خواهم در برنامه ام قسمتی مانند جستجویی که برای گرید گذاشته اید قرار دهم
> برای این کار SearchHighlight.js را به پروژه ام اضافه کردم
> اما تنها زمانی که تکست باکس (txtSearch) خالی باشد پیغام خطا نمایش میدهد و در مواقع دیگر هیچ اتفاقی نمی افتد
> آیا باید قسمت دیگری را هم به پروژه ام اضافه کنم یا تغییر خاصی لازم دارد؟


حقیقتاً توضیح اون همه کد جاوا اسکریپت از حوصله ی بنده خارج هست.
فقط به این نکته بسنده می کنم که متد highlightWord به صورت بازگشتی در المنت های GridView جستجو می کنه و اگر المنتی "متنی" پیدا کرد، متن اون رو با عبارت مورد جستجو مقایسه می کنه و در صورت برابر بودن، المنت اصلی رو حذف و المنت span ای ایجاد و اون رو در جای المنت قبلی قرار میده.
باید آشنایی در حد متوسط با جاوا اسکریپت داشته باشید.



> همان طور که گفته بودید من namespace های صفحه ام رو به web.config اضافه کردم ولی اگر اونها رو از صفحه ام حذف کنم ایراد میگره تنظیم خاص دیگه ای نداره؟؟


خیر. تنظیم دیگه ای نداره.



> من اینو برای table خودم مورد استفاده قرار میدم اما موقعی که میخوام یک ستون بیشتر رو به نمایش بذارم با همون templatefield متاسفانه اون قسمت empty لود میشه !!! اشکال کار کجاست ؟


متاسفانه بنده از علوم غیبه محروم هستم! :)

موفق باشید.

----------


## fallah_mojtaba

سلام
بعد از اجرای نسخه 4 برنامه خطای زیر در مرورگر به نمایش در می آید و خبری از کنترل نیست.
لطفا راهنمایی کنید..
.:: Common GridView Functions ::. by: Behrouz RadProcedure spBindGridView has no parameters and arguments were supplied.     
ممنون از لطفتون

----------


## minahoseini

خیلی خیلی ممنون از کدهاتون .................. محشر بود ............

----------


## hana2064

خیلی مطالب جالبی بود ممنون. میشه لطف کنین در مورد این خط توضیح بدین
Dim Cmd AsNew SqlCommand("spUpdateOrder", Cnn) 
این spUpdateOrder    برای چی تعریف شده ؟؟؟؟؟؟

----------


## Behrouz_Rad

spUpdateOrder یک Stored Procedure است که دستورات T-SQL در اون نوشته میشن و در دیتابیس وجود داره.

موفق باشید.

----------


## hana2064

ممنونم لطف کردین  :لبخند: یه سوال دیگه هم دارم اگه لطف کنین جواب بدین ممنون می شم :
Param = Cmd.Parameters.Add("@organName", SqlDbType.NVarChar, 50)
SqlDbType.NVarChar, 50 میشه درموردش توضیح بدین ، اگه بخوام مقدا ر یک textbox داخل organName قرار بگیره چه کار باید کرد؟؟؟؟؟؟؟؟؟

----------


## Behrouz_Rad

فیلد OrganName در جدول از نوع NVarChar تعریف شده. در نتیجه پارامتری که برای این فیلد هم در نظر گرفته میشه باید از نوع NVarChar باشه که این مورد با SqlDbType.NVarChar مشخص شده. همچنین حداکثر تعداد کاراکترهایی نیز که این فیلد می پذیره، 50 کاراکتر هست.
مقدار TextBox رو می تونی در خط بعد از دستور فوق، با Param.Value = TextBox1.Text به پارامتر پاس بدی.

موفق باشید.

----------


## saeid taheri

> شاهد نسخه ی ششم این پروژه هستید.
> 
> امکانات و اصلاحات این نسخه شامل:
> 
> 1) ارتقای دیتابیس برنامه به SQL Server 2005
> 2) استفاده از معماری 3 لایه 
> 3) اضافه کردن امکان مشاهده ی جزئیات به صورت Popup Menu با استفاده از AJAX
> 4) حل مشکل Export حروف فارسی در Office 2007
> 5) تغییر تابع Export برای تعیین رنج دلخواه Export رکوردها
> ...


سلام من وقتی برنامه رو اجرا می کنم با ایراد زیر مواجه می شوم چگونه می تونم برطرفش کنم

Cannot open database "GridView_DB" requested by the login. The login failed. Login failed for user 'HOME-B2E1234D14\ali'.

----------


## Behrouz_Rad

کاربر HOME-B2E1234D14\ali رو در SQL Server به لیست کاربران مجاز استفاده از دیتابیس اضافه کنید.
بارها بحث شده.

موفق باشید.

----------


## fallah_mojtaba

سلام و ممنون به خاطر کد جالبتون 
راستش وقتی من پروژه نسخه آخر را اجرا می کنم،با خطای زیر مواجه می شوم:
.:: Common GridView Functions ::. by: Behrouz Rad
Procedure spBindGridView has no parameters and arguments were supplied

 و در مرورگر چیز دیگری مشاهده نمیشه.
لطفا راهنمایی کنید
[IMG]file:///D:/DOCUME%7E1/ADMINI%7E1/LOCALS%7E1/Temp/moz-screenshot.jpg[/IMG][IMG]file:///D:/DOCUME%7E1/ADMINI%7E1/LOCALS%7E1/Temp/moz-screenshot-1.jpg[/IMG]

----------


## Behrouz_Rad

آیا دیتابیس صحیح رو Attach کردید؟

----------


## fallah_mojtaba

> آیا دیتابیس صحیح رو Attach کردید؟


با دوباره نصب کردن sql server   و attach کردن فایل موفق به اجرا شدم.
ممنون از کد خوبتون
با اجازه شما می خواستم از این grid view  در یک پروژه دانشگاهی استفاده کنم..

----------


## Behrouz_Rad

> با اجازه شما می خواستم از این grid view در یک پروژه دانشگاهی استفاده کنم..


مشکلی نیست اما اینجور نباشه که کل پروژه رو با نام خودت منتشر کنی! خبر رسید که یکی از دوستان در دانشگاه اصفهان یکی از مقالات بنده رو با کلی آب و تاب و بیان تحقیق 1 ماهه با نام خودش ارائه داده! ;)

----------


## fallah_mojtaba

سلام آقای راد
راستش من با تبدیل کد شما به سی شارپ با کدهای جاوا اسکریپت به مشکل برخوردم.مثلا
منو نمایش داده می شود ولی فرامین آن اجرا نمیشن ،یا منوی نمایش جزئیات، اطلاعات سطر رو نمایش نمی ده..
من فکر می کنم در raisecallback  دچار مشکل هستش..
به نظر شما این کد در سی شارپ معادل کد شما در vb است..

   void System.Web.UI.ICallbackEventHandler.RaiseCallbackE  vent( string eventArgument)
      {
       if ((!string.IsNullOrEmpty(eventArgument))) {
 :لبخند:          strReturn = eventArgument;
         GridViewFuncBehrouzRad.DAProject obj_DAProject = new GridViewFuncBehrouzRad.DAProject();     
         strFetchResult = obj_DAProject.GetOrderByID_AJAX_Format (Convert.ToInt32(strReturn));
        }
     }
     string System.Web.UI.ICallbackEventHandler.GetCallbackRes  ult()
    {
        return strFetchResult;
    }
لطفا راهنمایی کنید.

----------


## fallah_mojtaba

سلام 
خسته نباشد
آقای راد  در مورد ارسال  شماره سطر ها به تابع جاوا اسکریپت  که همون RowID هستش سوالی داشتم اینکه اگر چند تا از این grid view  در یک فرم داشته باشیم،چطوری می شه RowID  هر gridview را به تابع ارسال کرد.من از چند gridview شما در یک پروژه استفاده کردم و لی فقط اولی درست کار می کنه و  تابع روی بقیه اصلا اجرا نمیشه..
لطفا راهنمایی کنید

----------


## fire_off

آقای راد از چه کدی استفاده کردی برای ایجاد مجوز دسترسی و اضافه کردن بانک در sql در کامپیوتر دیگر در ضمن آیا باید حتماً در آن کامپیوتر sql نصب باشه؟

من با C#‎ کار میکنم

----------


## s.k711

سلام
چطوري مي شه شماره سطر DATA GRID را به دست آورد وقتي آن سطر را انتخاب مي كنيم.
vb.net 2005 & ASP.net 2

----------


## kezack

اقاي راد من كد شما رو به C#‎  تبديل كردم ولي اين خطا رو مي ده  :ناراحت: 
 
*Server Error in '/2' Application.* 

*Compilation Error* 

*Description:* An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately. 

*Compiler Error Message:* CS0106: The modifier 'public' is not valid for this item

*Source Error:*

[No relevant source lines]
*Source File:*    *Line:* 0 



Show Detailed Compiler Output:

C:\Program Files\Microsoft Visual Studio 8\Common7\IDE> "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\csc  .exe" /t:library /utf8output /R:"C:\WINDOWS\assembly\GAC_32\System.EnterpriseSer  vices\2.0.0.0__b03f5f7f11d50a3a\System.EnterpriseS  ervices.dll" /R:"C:\WINDOWS\assembly\GAC_32\System.Web\2.0.0.0__  b03f5f7f11d50a3a\System.Web.dll" /R:"C:\WINDOWS\assembly\GAC_MSIL\System.Web.Mobile\  2.0.0.0__b03f5f7f11d50a3a\System.Web.Mobile.dll" /R:"C:\WINDOWS\assembly\GAC_MSIL\System\2.0.0.0__b7  7a5c561934e089\System.dll" /R:"C:\WINDOWS\assembly\GAC_MSIL\System.Web.Service  s\2.0.0.0__b03f5f7f11d50a3a\System.Web.Services.dl  l" /R:"C:\WINDOWS\assembly\GAC_MSIL\System.Configurati  on\2.0.0.0__b03f5f7f11d50a3a\System.Configuration.  dll" /R:"C:\WINDOWS\assembly\GAC_MSIL\System.Xml\2.0.0.0  __b77a5c561934e089\System.Xml.dll" /R:"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\T  emporary ASP.NET Files\2\a696d814\6d41858e\App_Code.d9walzmn.dll" /R:"C:\WINDOWS\assembly\GAC_32\System.Data\2.0.0.0_  _b77a5c561934e089\System.Data.dll" /R:"C:\WINDOWS\assembly\GAC_MSIL\System.Security\2.  0.0.0__b03f5f7f11d50a3a\System.Security.dll" /R:"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\m  scorlib.dll" /R:"C:\WINDOWS\assembly\GAC_MSIL\System.Drawing\2.0  .0.0__b03f5f7f11d50a3a\System.Drawing.dll" /out:"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727  \Temporary ASP.NET Files\2\a696d814\6d41858e\App_Web_default.aspx.cdc  ab7d2.vlpouvd-.dll" /D:DEBUG /debug+ /optimize- /win32res:"C:\WINDOWS\Microsoft.NET\Framework\v2.0.  50727\Temporary ASP.NET Files\2\a696d814\6d41858e\0fx6x-tj.res" /w:4 /nowarn:1659;1699  "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Tem  porary ASP.NET Files\2\a696d814\6d41858e\App_Web_default.aspx.cdc  ab7d2.vlpouvd-.0.cs" "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Tem  porary ASP.NET Files\2\a696d814\6d41858e\App_Web_default.aspx.cdc  ab7d2.vlpouvd-.1.cs" "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Tem  porary ASP.NET Files\2\a696d814\6d41858e\App_Web_default.aspx.cdc  ab7d2.vlpouvd-.2.cs"Microsoft (R) Visual C#‎ 2005 Compiler version 8.00.50727.42for Microsoft (R) Windows (R) 2005 Framework version 2.0.50727Copyright (C) Microsoft Corporation 2001-2005. All rights reserved.c:\Documents and Settings\Taha\Desktop\New Folder (2)\2\Default.aspx.cs(630,17): error CS0106: The modifier 'public' is not valid for this itemc:\Documents and Settings\Taha\Desktop\New Folder (2)\2\Default.aspx.cs(641,19): error CS0106: The modifier 'public' is not valid for this item



*Version Information:* Microsoft .NET Framework Version:2.0.50727.42; ASP.NET Version:2.0.50727.42 
كد رو ضمينه كردم لطفا كمكم كنيد

----------


## mp2009

دوست عزیز اقای راد لطف کردن و خودشون نمونه این گریدویو رو با کد C#‎ گزاشتن.
به چند پست قبل مراجعه کن

----------


## kezack

دوست عزیز من مطالب قبل رو نكاه كردم ولي هيجكدوم  C#‎  نبود

----------


## mehdisiavashian

> دوست عزیز اقای راد لطف کردن و خودشون نمونه این گریدویو رو با کد C#‎ گزاشتن.
> به چند پست قبل مراجعه کن


سلام اگه ميشه لطف كنيد بگيد توي كدوم پست؟ كدم صفحه؟ واقعا حيفه كد به اين زيبايي معادل سي شارپش نباشه!!   :بامزه: 
ممنون از همه دوستان كه سخاوتمندانه كد هاي زيباشون رو اينجا مي گذارند.

----------


## Behrouz_Rad

نمونه ی #C نداره. دات نت دات نته. کسی که با دات نت کار می کنه نوع زبان واسش فرقی نمی کنه.

موفق باشید.

----------


## mp2009

جناب راد شما مطمعني كه نداره؟
اخه من خودم چند وقت پيش تو همين سايت پيدا كردم . حالا دوباره ميگردم اگه پيدا كردم ميزارمش. 
راستي دوستان اگه ميخواهيد خودتون همه كد ها رو به C#‎ تبديل كنيد ميتونيد از لينك دورن امضاي من استفاده كنيد.
موفق باشيد

----------


## kezack

من از این لینک استفاده کردم ولی یک خطا داد که در بالا عنوان کردم



> *Server Error in '/2' Application.* 
> 
> *Compilation Error* 
> 
> *Description:* An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately. 
> 
> *Compiler Error Message:* CS0106: The modifier 'public' is not valid for this item
> 
> *Source Error:*
> ...


و کد مورد نظر را هم گذاشتم

----------


## Behrouz_Rad

روال RowCreated رو ببین.

----------


## htmbarnamenevisl

میشه اینایی که اینجاست با C#‎ بنویسید تا ما که vb بلد نیستیم هم بتونیم ازش استفاده کنیم

----------


## Behrouz_Rad

نه نمیشه. چون ابزارهای زیادی برای تبدیل کدهای دات نت به هم وجود داره که می تونی از همونها استفاده کنی.

----------


## samaram

سلام جناب راد. من وقتي مي خوام ديتابيسشو نصب كنم اين پيامو ميده. اسكرين شات زير رو ببينيد:

ميشه بفرماييد بايد چيكار كنم؟
(اگه طبق پيام يه كليد رو بزنم باز هم اتفاقي نمي افته. در ضمن sql server2000 دارم.)

----------


## Behrouz_Rad

احتمالاً ASP.NET به درستی روی سیستمت پیکربندی نشده.
فایل sql رو مستقیماً در Query Analyzer اجرا کن و به کاربر ASPNET مجوز دسترسی به دیتابیس رو بده.
در ضمن، از نسخه ی آخر استفاده کن تا این مشکلات رو نداشته باشی. در نسخه ی آخر، فایل mdf و ldf در پوشه ی App_Data وجود دارند که باید اونها رو در Management Studio اتچ کنی.

موفق باشید.

----------


## Saber_Fatholahi

آقای راد شما یه جایی گرید ویو اکسپورت کردین به اکسل امااین روش استاندارد نیست نمیشه اونو ازطریق برنامه دیگه ای خوند این فایل توی اکسل نشون دادهمی شه اما مثلا بخوایم از طریق یه برنامه ای محتویات این فایل بخونیم خطا می ده لطفا بررسی کنین

----------


## Behrouz_Rad

فقط از طریق Excel میشه خوندش. برای ایجاد خروجی منطبق با فرمت Excel باید از PIA استفاده بشه. Component Art هم کامپوننتی بدین منظور داره... این روش، خروجی HTML تولید می کنه. بیشتر هدف آشنایی با تکنیک هاست.

موفق باشید.

----------


## Behrouz_Rad

*شاهد نسخه ی 7 این پروژه هستید.*

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

3.0 C#‎‎‎ و VB.NET 9.0 که همراه با VS.NET 2008 معرفی شدند، قابلیت های جدیدی رو معرفی کردند که به سختی میشه از اونها چشم پوشی کرد.
هر چند که همیشه سعی بر این بوده که هم C#‎‎‎ و هم VB.NET پا به پای هم پیش برن و عدم پشتیبانی از قابلیتی در یکی از این زبان ها، با تعبیه ی قابلیتی منحصر به فرد در زبان مقابل جبران بشه، اما با معرفی Net Framework 3.5.، این C#‎‎‎ بود که پشتیبانی به نسبت کاملتری از قابلیت هایی که مربوط به کدهای برنامه نویسی میشن داشت. Lambda Statements (و نه Lambda Expressions) و Automatic Properties و Array Literals از جمله قابلیت هایی هستند که در VB.NET 9.0 پشتیبانی نمیشن. خبر خوب اینکه VB.NET در نسخه ی 10.0 خودش تمامی قابلیت های جاری C#‎‎‎ رو پشتیبانی خواهد کرد.

سعی من بر این بوده که در این پروژه از این امکانات استفاده کنم. هر چند که این استفاده، کم، و هدف، بیشتر، نمایش نحوه ی استفاده از قابلیت ها بوده. به همین دلیل و از آنجا که بر طبق رسمی نانوشته، مقالات و کدها در سرتاسر وب اکثراً با استفاده از C#‎‎‎ منتشر می شوند، با عرض پوزش از دوست داران VB.NET و ابزار ارادت ویژه به این قشر و سپاس از تمامی دوستانی که تا نسخه ی 6 این برنامه با VB.NET همراه شدند، نسخه ی 7 این پروژه را با C#‎‎‎ نوشتم.

*توضیح ویژه در مورد تغییرات در این نسخه:*
روش ها، الگوها و معماری های مختلفی برای پیاده سازی یک پروژه وجود دارند.
یکی از روش هایی که مورد استقبال عموم واقع شده و بیشترین فراگیری و محبوبیت رو داره، معماری چند لایه (n-Tier) است که امروزه زیاد در مورد اون می شنوید.
معماری چند لایه در ساده ترین حالت خودش حداقل از سه لایه پشتیبانی می کنه. این سه لایه شامل BLL، DAL و PL هستند.
هیچگاه نمی توان قانون و سبک مشخصی برای پیاده سازی این نوع معماری ارائه داد. افراد مختلف نسبت به تجربه، توانایی ها و درک خود از این نوع معماری، پیاده سازی های متفاوتی را ارائه می دهند.
درک صحیح این نوع معماری همراه با تسلط بر مفاهیم شی گرایی و صد البته آشنایی و درک مفاهیمی از دات نت که می توان از آنها برای پیاده سازی این نوع معماری کمک گرفت، می تواند به ایجاد نمونه ای عالی از یک پروژه ی چند لایه کمک شایانی کند.

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

*در این پروژه:*
- قابلیت جدیدی اضافه نشده بلکه هدف تغییر کامل DAL و BLL و بازنویسی مجدد آنها از ابتدا با توجه به این سبک از معماری بوده.
- دیتابیس برنامه از پوشه ی App_Data خوانده می شود و نیاز به Attach کردن آن در SQL Server نیست.
- باگی نیز در هنگام ویرایش سطر وجود داشت که باعث میشد مقدار DropDownList "قطعه" و "زیر قطعه" از بین برود که در این نسخه برطرف شده است.
- تا حد امکان از استانداردهای کد نویسی دات نت پیروی کردم.

امیدوارم که این پروژه بتونه اکثر سوالاتی که در مورد "نحوه ی پیاده سازی معماری چند  لایه" و در کل هر نوع سوالی که مربوط به اعمال DML پایگاه داده است رو پاسخگو باشه.

به دلیل حضور کمتر بنده از 6 فروردین، پاسخگویی به سوالات دوستان ممکنه با تاخیر صورت بگیره.

با عرض پوزش از دوستانی که در سمینار C#‎‎‎ و LINQ شرکت کردند به خاطر تاخیر در انتشار این پروژه، این پروژه را به عنوان عیدی از بنده قبول بفرمایید :)

به منظور انسجام تاپیک، از پرسیدن سوالات کلی، ارسال آف تاپیک و پیام های تشکر آمیز خودداری و صرفاً به دکمه ی تشکر اکتفا 
بفرمایید.

*با آرزوی سالی توأم با موفقیت و شادکامی برای تمامی مردم ایران زمین.* :لبخند: 

آپدیت در تاریخ 1/16/89:
بر طرف کردن باگ در هنگام حذف رکورد >>> تولید نسخه ی 7.1
تعداد دانلود نسخه ی 7.0: 2876

----------


## saeed razaee

با سلام 
اي كاش دوستان اين پروژه را  با عنوان يك مقاله به صورت تئوري از شروع تا پايان توضيح مي دادند تا هم با معماري چند لايه خوب آشنا شويم و هم اينكه عيدي سال 88 محسوب شود.

----------


## Behrouz_Rad

> اي كاش دوستان اين پروژه را با عنوان يك مقاله به صورت تئوري از شروع تا پايان توضيح مي دادند تا هم با معماري چند لايه خوب آشنا شويم


گفتنش راحته اما به دست آوردن وقتش راحت نیست ;)




> هم اينكه عيدي سال 88 محسوب شود.


برای عیدی گرفتن، شرط تعیین نمی کنند :)

موفق باشید.

----------


## salehbagheri

سلام!

با تشكر از زحمات شما!

ميخواستم بگم كه بخش Delete مربوط به GridView كار نميكنه و در قسمت زير خطا ميده!


public static bool DeleteOrder(string orderIds, char sep)
{
    string regEx = @"^\d+(" + sep + @"\d+)*$";
*    if (!Regex**.IsMatch(orderIds, regEx)) ///two var is'nt match!*
    {
         throw new Format Exception("Invalid format! the format must be: n,n,...");
    }
    bool isDeleted = SiteProvider.Orders.DeleteOrder(orderIds, sep);
    return isDeleted;
}


متأسفانه از RegEx هم سر در نياوردم تا خودم درستش كنم!

با تشكر!

----------


## m-ezati

من هنوز اینو تست نکردم ولی از ظواهر مشخصه که شما تلاش خوبی کردید 
و لایق تشکر هستید 
با تشکر فراوان

----------


## siamak.tabrizi

با تشکر فراوان از شما
اگه بخواهیم به این گرید اکسپورت فایل PDF رو هم اضافه کنیم تغییرات خاصی در کد HTML آن باید بدهیم؟ 
بنده با تغییر نوع فایل و Content به نتیجه نرسیدم.
موفق باشید

----------


## niksoft

با سلام خدمت جناب آقای راد
من از نسخه 4 به بعد هنگام Build کردن برنامه خطای ذیل را دریافت میکنم 


it is an error to use a section registered as allowDefinition = 'MachineToApplication' beyond application level.
This error can be caused by a virtual deirectory not being configured as as application in IIS



این خطا  در فایل web.config است که مربوط به کد 
<authentication mode="Windows"/> است

ممنون میشم راهنمایی کنید..

----------


## Behrouz_Rad

salehbagheri@
با چه خطایی مواجه میشی؟ FormatException؟ قسمت حذف برای من به خوبی کار می کنه.

niksoft@
این خطا مربوط به برنامه نمیشه. دلایل مختلفی داره. برای دلایلش در گوگل جستجو کن.

موفق باشید.

----------


## salehbagheri

سلام بهروزجان!
مدتي مديدي بود كه حضورتان را حس نمي كردم!

مشكل خاصي وجود نداره! فقط اينكه دو مقدار با هم Match نيستند! و چون با هم Match نيستند دستور If اجرا ميشه و خطاي مورد نظر در بالاي صفحه ظاهر ميشه!

----------


## saman_husseini

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

----------


## raziee

> نسخه ی نمایشی این پروژه در لینک زیر قابل دسترسی است.
> 
> http://GridView.CodePro.ir


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

----------


## shahab2005

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

----------


## Hossis

> *شاهد نسخه ی 7 این پروژه هستید.*


 با سلام و تشکر 
می خواستم بگم چرا این قدر طول می‌دید همون اول نسخه 20 رو بدید بیرون همه استفاده کنند  :چشمک:  :بامزه:  :قهقهه: 
این پروژه خیلی خوبی بود و دقیقا همون چیزی هست که من مدتها دنبالش بودم.
زحمت این کار باشما بوده و راحتی دنلود و استفاده اش با ما لذا باز هم ممنون و متشکریم!! :اشتباه:  :تشویق:

----------


## minamorsali

سلام
اولا با تشکر از برنامه خیلی خوبتون.
می بخشید من برنامه رو که می خوام اجرا کنم، بهم ارور child nodes not allowed میده. ظاهرا ارور مربوط به فایل web.configاست. به این خطش گیر میده:
<providerOptionname="CompilerVersion"value="v3.5"/>
مشکل چیه؟ لطفا راهنماییم کنید.

----------


## Behrouz_Rad

نسخه ی آخر در VS 2008 نوشته شده و بدون مشکل در اون محیط اجرا میشه.

----------


## minamorsali

> نسخه ی آخر در VS 2008 نوشته شده و بدون مشکل در اون محیط اجرا میشه.


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

----------


## behnam-s

سلام



> نسخه ی نمایشی این پروژه در لینک زیر قابل دسترسی است.
> 
> http://GridView.CodePro.ir


سایت درست بالا نمیاد. Error زیر رو میده
Could not find stored procedure 'spGetOrders'.

----------


## Behrouz_Rad

پس از ارتقاء سخت افزاری هاست، دیتابیس ها از بین رفتند. اگر حس و حالش بود، مجدداً آپلود می کنم.

----------


## h.alizadeh

سلام،

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go

ALTER PROCEDURE [dbo].[spDeleteOrder]
(
@IDs nvarchar(4000),
@Sep nchar(1)
)
AS
DELETE FROM tblOrders WHERE intID IN(SELECT nstr FROM dbo.iter_charlist_to_tbl(@IDs,@Sep))

در پروژه6:
ميشه بگيد منظورتون ازiter_charlist_to_tbl(@IDs,@Sep) چيه؟ اين جدول از كجاس؟
يعني اينطوري ما چند سطر روباهم مي تونيم پاك كنيم؟
(@IDs,@Sep) اينا براي چيند؟
-----

 Public Class BLProject
        Inherits DAProjectدر BLProject اگه اينطوري انجام مي داديم اشكالي نداشت؟چرا شما اينطوري نكرديد؟
-----
منظورتون ازين چيه؟
Implements ICallbackEventHandler
در صفحه ي Default.aspx.vb

ممنون

----------


## Borland-Delphi7

آقا دستت درد نکنه اگر تونستی یه نسخه C#‎ 2005 از این پروژت بزار

----------


## shocraneh

با تشکر میشه بگین چه جوری فایل batch رو درست کنم

----------


## shocraneh

شرمنده من این برنامه رو دانلود کردم و اجرا شد و بعد نسخه بالاتر اونو دانلود کردم و چون مسیر یکی بود رو همون پوشه اعمال 
تغییرات کرد و حالا اصلا فایل اجرایی دات نت رو نداره که بخاد اجرا شه . حتی دوباره هر دو نسخه رو جداگانه دانلود کردم  با کمال تعجب همون 
نسخه اولم دیگه فایل اجرایی نداشت  والا موندم چی کار کنم  منظورم همون فایلیه که آرم ویژوال استریو رو داره  حالا نمی شه 
جداکانه همون فایلی بزارید تا من تو مسیر کپی کنم 
 :متفکر:  :متفکر:

----------


## h.alizadeh

> شرمنده من این برنامه رو دانلود کردم و اجرا شد و بعد نسخه بالاتر اونو دانلود کردم و چون مسیر یکی بود رو همون پوشه اعمال 
> تغییرات کرد و حالا اصلا فایل اجرایی دات نت رو نداره که بخاد اجرا شه . حتی دوباره هر دو نسخه رو جداگانه دانلود کردم با کمال تعجب همون 
> نسخه اولم دیگه فایل اجرایی نداشت والا موندم چی کار کنم منظورم همون فایلیه که آرم ویژوال استریو رو داره حالا نمی شه 
> جداکانه همون فایلی بزارید تا من تو مسیر کپی کنم


خب پروژه ها رو در دو مسير متفاوت بريز و براي باز كردنشون از منوي فايل open web site برو و بعدروي پوشه ي پروژه مربوطه كليك كن و openبزن.

بانك نسخه هاي مختلف پروژه شون هم با هم فرق مي كنه (تقريباً) براي هر پروژه از بانك مربوط بههمون پروژه استفاده كن.

(ببخشيد من پريدم اينجا!)

----------


## mmnoody2006

سلام
با اجازه آقابهروز
راستش فکر کنم 95 درصد کسانی که این برنامه رو دانلود می کنن
هیچ استفاده ای ازش نمی کنن

و این فقط یه نمایش قدرته 

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

این برنامه فقط حالت خذف تکی و گروهی + صفحه بندی رو داره
که می تونید کم کم با امکانات  دیگر هم بیشتر آشنا بشید

(نسخه 6)

----------


## rezaei manesh

> سلام
> با اجازه آقابهروز
> راستش فکر کنم 95 درصد کسانی که این برنامه رو دانلود می کنن
> هیچ استفاده ای ازش نمی کنن
>  و این فقط یه نمایش قدرته 
> 
> بنابراین من به فکر ساده سازی این برنامه افتادم


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

----------


## danijoon

مرسی از راهنمایی هاتون

----------


## h.alizadeh

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


سلام،
فکر خوبیه...
 :متفکر: 
البته تشکر از آقای راد ولی اگه یکی بیاد که وقت بیشتری داره وساده سازی کنه می تونه واسه افراد بیشتری مفید باشه.

مخصوصاً پروژه آخری رو  :لبخند گشاده!: 

میشه آموزش هم با داکیومنت  :لبخند:

----------


## mmnoody2006

1-از اونجایی که viewstate مقدار فضای زیادی رو اشغال می کنه می تونم بجاش
از session استفاده کنم؟؟؟؟؟
2-آیا این مشکلی رو بوجود میاره؟؟؟؟

----------


## Behrouz_Rad

mmnoody2006@
در کدام قسمت این پروژه مد نظرته؟

----------


## iman_ad

viewstate از session خیلی بهتره مخصوصا روی این هاستینگایی که هزارتا بامبول داران. 
viewstate کمی حجم صفحه فقط زیاد می کنه و برای سرورهای غیر اختصاص مناسب به نظر می رسه

----------


## Behrouz_Rad

> viewstate از session خیلی بهتره مخصوصا روی این هاستینگایی که هزارتا بامبول داران.
> viewstate کمی حجم صفحه فقط زیاد می کنه و برای سرورهای غیر اختصاص مناسب به نظر می رسه


ViewState فقط در صفحه ی جاری قابل دسترس هست اما Session در تمامی صفحات. بستگی به سناریوی شما داره که چه موقع از چه چیزی استفاده کنید.

موفق باشید.

----------


## iman_ad

این می دونم مهندس جان ولی این هاستینگا نمی دونم چیکار می کنن session هر چقدر هم که lifetime تعریف کنی چند دقیقه بعد از بین می ره، خودشونو راحت کردن البته بستگی به جایی داره که ازش هاست می گیری، نکه اینکه روش ذخیره session تغییر بدی مثلا روی database ذخیره کنی،شما اگه راه حلی برای این مشکل داری لطفا بگو استفاده کنیم، ممنون

----------


## Behrouz_Rad

هاست ها چون از فایروال و آنتی ویروس استفاده می کنند، موجب میشه که Session های شما null بشه. پیکربندی صحیح آنتی ویروس مانع از null شدن Session ها میشه.

من تا حالا پیش نیومده که از Session استفاده کنم... معماری برنامه رو تغییر بدید.

موفق باشید.

----------


## mmnoody2006

من فقط برای همون قسمت صفحه بندی مربوط به gridview منظورم بود

----------


## Behrouz_Rad

> من فقط برای همون قسمت صفحه بندی مربوط به gridview منظورم بود


بله می تونید استفاده کنید اما اصلاً صحیح نیست. به این دلیل که هاست ها اکثراً با Session مشکل دارند و دوم اینکه بار اضافی به سرور تحمیل می کنید. کلاینت رو تنبل بار نیارید و قسمتی از داده ها رو در سمت کلاینت دخیره کنید. ViewState به همین منظوراستفاده میشه. حجم اندیس صفحه اصلاً محسوس نیست که نگهداریش در ViewState موجب افزایش غیر طبیعی حجم صفحه بشه.

موفق باشید.

----------


## mononok

سلام دوستان برنامه نويس

من يه چيزي بگم؟؟؟ :لبخند: 

فقط به بي سوادي من نخنديد من مبتديم ميشه يكي به من بگه اين برنامه ها رو چطور باز كنم؟ :خجالت: 

از همون برنامه اول دچار مشكل هستم!
لطفا به زبون ساده بگيد تا بتونم بازشون كنم! :خجالت:

----------


## atryad

با سلام
خوب ابتدا باید برنامه رو از حالت فشرده خارج کنی یعنی رو فایل دریافتی کلیک راست و گزینه Extract... (بسته به نوع برنامه فشرده سازی که داری ممکن هست این گزینه فرق کند) رو انتخاب کنید تا پوشه حاوی این برنامه ساخته بشه .
 حالا برنامه ویژوال استودیو رو باز کن
از منوی فایل گزینه open و از زیر منوها گزینه website.. رو انتخاب کن .
حالا پوشه حاوی برنامه رو انتخاب کن تا پروژه باز بشه و ..... 
با تشکر

----------


## mononok

ممنون خيلي جامع بود به خصوص قسمت خارج كردن از فشرده سازي :لبخند: 

نه ببخشيد من بد مطرح كردم
شما برنامه اولي كه گذاشته شده نگاه بكن وقتي run مي كنم از قسمت كدهاي پايگاهش ايراد مي گيره فايل *"SetupDataBase.bat"* درست اجرا نمي شه چون قراره اون پايگاهشو تو سيستمم قرار بده قرار نيست كه من پايگاه بسازم و كدهارو تغيير بدم!

خواستم بدونم سايرين چطور اجراش كردن؟
ممنون از راهنماييتون :لبخند:

----------


## mmnoody2006

داداشی باید فایل های اسکریپت sql رو نصب کنی اول باید sql server داشته باشی داری ؟
 بهتره ورژن های بعدی که فایل رو داره دانلود کنی بهتره  :لبخند گشاده!: 
ورژن 6 خوبه  نمونه ساده شده رو هم گذاشتم

----------


## mononok

> داداشی باید فایل های اسکریپت sql رو نصب کنی اول باید sql server داشته باشی داری ؟


سلام

من sql server 2005 رو دارم ولي با قسمت پايگاه برنامه ها مشكل دارم منظورتون از اسكريپت sql چيه؟ اين فايل GridView_Setup_Database كه تو برنامه اول هست بايد چطوري به سرورم attach كنم؟
اينو نمي دونم چطوري بايد باز كنم!

فكر كنم برنامه شما رو هم دريافت كردم اما باز گير كرد ! ميشه همين برنامه اولو بگيد خودتون چطور اجراش كرديد؟ sql من مشكلي نداره چون در حال حاضرم دارم باهاش كار مي كنم پس چرا اين برنامه هاراحت باز نمي شن؟

----------


## unbounded

ضمن تشكر از زحمتتون من شنيدم اين كنترل خيلي سنگينه و سايت مهم كمتر ازش استفاده مي كنن و بيشتر از Repeater استفاده مي كنن! آيا اين موضوع صحت داره؟

----------


## Behrouz_Rad

> ضمن تشكر از زحمتتون من شنيدم اين كنترل خيلي سنگينه و سايت مهم كمتر ازش استفاده مي كنن و بيشتر از Repeater استفاده مي كنن! آيا اين موضوع صحت داره؟


اگر فقط قصد نمایش داده ها رو دارید از Repeater استفاده کنید و اگر نیاز به اعمال بیشتر مثل اضافه کردن و ویرایش درجا و مرتب سازی رو دارید از GridView استفاده کنید.

موفق باشید.

----------


## shocraneh

با سلام .  
 راستش سوالی که می خام بپرسم با توجه به تلاشی که شما در این ضمینه برای ارتقای سطح علمی اعضای سایت نشان دادید برای خودم مسلم است ،اما یکی از دوستان مصر است که قضیه پیجینگ در گرید  بدون استفاده از  ROW_NUMBER() و اسکیوال به شیوه بهینه (در هر صفحه همون تعداد رکوردی رو از پایگاه استخراج کنی که نمایش داده میشه )قابل انجام است . Protected Sub GridView2_PageIndexChanging(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewPageEventArgs) Handles GridView2.PageIndexChanging

        GridView2.PageIndex = e.NewPageIndex
        BindGridView2()
    End Sub
برای همین بهتر دیدم سوالم رو مطرح کنم ،آیا این روش مزیت همیشگی دارد یانه ؟البته من از آخرین ورژنی که با ویبی ارائه دادید استفاده کردم


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

یه تقاضای : من از آخرین نسخه سر در نیوردم حتی این که به شکل روش کار کردید .اگه مشابه ویبی کار رو حتی اگه ناقص باشه ، رو سیستمتون دارید خواهشا بزاریدیا 
اگه لینکی هست که اصول کار با لیست رو توضیح داده باشه . ممنون 
ببخشید طولانی شد . باعرض معذرت عجله دارم

----------


## Behrouz_Rad

به من کدی نشون ندادی که بخوام در موردش نظر بدم که بدون استفاده از ROW_NUMBER به چه شکل عمل می کنه. اون 2 خط کد چیز خاصی رو مشخص نمی کنه. کد بازیابی رو قرار بده. ROW_NUMBER در SQL Server 2005 اضافه شده. در 2000 از temp table استفاده میشد. کدها رو قرار بده تا نظرم رو بگم.



> تو ورژن آخر راه حلی برای این نوع جستجو وجود داره ؟؟


در این پروژه فقط یک نوع جستجو وجود داره و اون هم جستجوی درجا در صفحه با استفاده از جاوا اسکریپت هست. SELECT ای برای جستجو وجود نداره.



> من از آخرین نسخه سر در نیوردم حتی این که به شکل روش کار کردید .اگه مشابه ویبی کار رو حتی اگه ناقص باشه ، رو سیستمتون دارید خواهشا بزارید


نسحه ی 7 رو از ابتدا با C#‎‎ نوشتم و نسخه ی VB.NET نداره. با کمی تلاش یاد می گیرید.

موفق باشید.

----------


## shocraneh

روی 2005 منظور من بود . کد خاصی نداره ، علاوه بر کد بالا 
Public Sub BindGridView2()
       
        Dim obj As New BLLproject
        Dim ds As DataSet = obj.PopulateGridView1

        GridView2.DataSource = ds.Tables(0)
        GridView2.DataBind()
    End Sub
در ادامه تابع از پروسیجری استفاده کرده که یه سلکت معمولی داره SELECT * FROM Table1 where .....
 داره 
اینم توضیح مشکلم با گزینه انتخاب تمام موارد (توضیح : وقتی برای جستجو یکی از گزینه ها رو انتخاب می کنم و خط به خط اجرا می کنم بعد از کد مربوط به بایند گرید وارد محیط design  شده و TemplateField ها رو مقدار دهی می کند . اما اگه گزینه همه موارد رو انتخاب کنم Dim pricemin1 As String = PriceMin.Text
        If pricemin1 = "" Then
            pricemin1 = DBNull.Value.ToString
        End If
در پروسیجر 
if (@PriceMin1 is null)
set @PriceMin1 = '%'


با وجودی که ds  مقدار می گیره و گرید بایند میشه دیگه وارد design  نمی شه و خوب خروجی هم نمی زنه؟؟؟

راستش منظورتون رو از جستجوی در جا متوجه نشدم ؟؟

----------


## Behrouz_Rad

اوکی. دوستت اشتباه می کنه. کدهایی که نوشتی تمامی داده ها رو لود می کنه و GridView نسبت به صفحه ی جاری خودش محدوده ی مورد نظر رو استخراج می کنه.

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

موفق باشید.

----------


## jingiliboyz

من کاری رو که شما گفتید کردم ولی وقتی خواست صفحه بالا بیاد با این مشکل روبرو شد که عکسش رو گذاشتم ببینید جالب اینجاست که error هم نمیده

----------


## nPad.Net

> با تشكر از زحمات شما!
> 
> ميخواستم بگم كه بخش Delete مربوط به GridView كار نميكنه و در قسمت زير خطا ميده!
> 
> 
> public static bool DeleteOrder(string orderIds, char sep)
> {
>    string regEx = @"^\d+(" + sep + @"\d+)*$";
> *   if (!Regex**.IsMatch(orderIds, regEx)) ///two var is'nt match!*
> ...


regEx چیه و چرا باید با orderIds مچ باشه! چند تا سوال رو درمورد بخش Delete دیدم که به نتیجه نرسیدن.میشه لطفا یه توضیح مختصر در مورد نحوه حذف گروهی سطرای انتخاب شده از گرید ارائه بدید.
منم با همین خطا مواجه شدم!(می خوام بدونم علت اجرای Exception Format چی میتونه باشه) راستش می خواستم با اجازتون از کدها به جای حذف، در update گروهی  gridview با کلیک روی یه Button استفاده کنم.
ممنون میشم راهنمایی کنید :افسرده:

----------


## paladin

با سلام و خسته نباشید. ضمن تشکر از پروژه خوبتون ،میشه بگید که combo و  edit هارو توی footer چجوری گزاشتید؟

----------


## hasti.lm

با سلام 
آیا با استفاده از تابع جداکننده ای که نوشتید می شه  یه رشته ای از ID ها رو گرفت و بعد از جداکردن ID ها اون ها رو به جای حذف کردن به   یه   table  اضافه  کرد؟ با تشکر

----------


## Behrouz_Rad

> با سلام 
> آیا با استفاده از تابع جداکننده ای که نوشتید می شه  یه رشته ای از ID ها رو گرفت و بعد از جداکردن ID ها اون ها رو به جای حذف کردن به   یه   table  اضافه  کرد؟ با تشکر


بله میشه. خروجی اون تابع، یک جدول هست. در جدول، پیمایش و رکوردها رو وارد کن.

موفق باشید.

----------


## nPad.Net

> با سلام 
> 
> 
> 
> آیا با استفاده از تابع جداکننده ای که نوشتید می شه یه رشته ای از ID ها رو گرفت و بعد از جداکردن ID ها اون ها رو به جای حذف کردن به یه table اضافه کرد؟ با تشکر


اگه منظورتونو درست متوجه شده باشم شما میخواید چند سطرمتشکل از id هاتونو به صورت گروهی و یکجا وارد یه tbl کنید.من از این تابع برا select استفاده کردم مشکلی نداشت

ولی واسه insert اگه نخواید ازfor استفاده کنید میتونید علاوه بر این تابع از این مقاله هم ایده بگیرید.

موفق باشید

----------


## Behrouz_Rad

> منم با همین خطا مواجه شدم!(می خوام بدونم علت اجرای Exception Format چی میتونه باشه)


*یک باگ در نسخه ی 7.0 این پروژه وجود داشت که منجر به تولید خطا در هنگام حذف رکورد میشد. این باگ برطرف شد. نسخه ی اصلاح شده (7.1) را از لینک ذیل دریافت بفرمایید:*
https://barnamenevis.org/showth...=50594&page=12

موفق باشید.

----------


## Behrouz_Rad

> با سلام و خسته نباشید. ضمن تشکر از پروژه خوبتون ،میشه بگید که combo و  edit هارو توی footer چجوری گزاشتید؟


این کنترل ها در تگ <FooterTemplate> که از زیر تگ های <TemplateField> کنترل GridView هست قرار داده شده اند.

موفق باشید.

----------


## salehbagheri

> یک باگ در نسخه ی 7.0 این پروژه وجود داشت که منجر به تولید خطا در هنگام حذف رکورد میشد. این باگ برطرف شد. نسخه ی اصلاح شده (7.1) را از لینک ذیل دریافت بفرمایید:


دمت گرم دقيقاً يك سال و دو روز بعد از اين كه باگ رو كشف كردم اين مشكل رو رفع كرديد!

https://barnamenevis.org/showpo...&postcount=114

----------


## Behrouz_Rad

> دمت گرم دقيقاً يك سال و دو روز بعد از اين كه باگ رو كشف كردم اين مشكل رو رفع كرديد!
> 
> https://barnamenevis.org/showpo...&postcount=114


حسش نبود رفعش کنم  :لبخند گشاده!:  :چشمک:

----------


## hasti.lm

> بله میشه. خروجی اون تابع، یک جدول هست. در جدول، پیمایش و رکوردها رو وارد کن.
> 
> موفق باشید.


 درسته که نتیجه یه جدوله ولی نمی تونم روی سطرها حرکت کنم.

----------


## iman_ad

public static OrdersProvider Instance
        {
            get
            {
                if (_instance == null)
                {
                    _instance = (OrdersProvider)Activator.CreateInstance(
                       Type.GetType(SiteHelper.Settings.Orders.ProviderTy  pe));
                }
                return _instance;
            }
        }
سلام می خواستم بدونم چرا این property به صورت static تعریف شده
یا این property

    public static class SiteProvider
    {
        public static OrdersProvider Orders
        {
            get { return OrdersProvider.Instance; }
        }
    }

----------


## Behrouz_Rad

> public static OrdersProvider Instance
>         {
>             get
>             {
>                 if (_instance == null)
>                 {
>                     _instance = (OrdersProvider)Activator.CreateInstance(
>                        Type.GetType(SiteHelper.Settings.Orders.ProviderTy  pe));
>                 }
> ...


از Singleton Pattern استفاده کردم. در موردش تحقیق کن.

موفق باشی.

----------


## iman_ad

می شه بگی چه اتفاقی در حافظه موقع استفاده از چنین property هایی می افته. معمولا توی asp.net از property های static اجتناب می شه، می شه یکم توضیح هم بدید من چیزی که گفتید حتما مطالعه می کنم

----------


## Behrouz_Rad

> می شه بگی چه اتفاقی در حافظه موقع استفاده از چنین property هایی می افته. معمولا توی ASP.NET از property های static اجتناب می شه، می شه یکم توضیح هم بدید من چیزی که گفتید حتما مطالعه می کنم


Singleton Pattern برای تضمین ایجاد یک نمونه ی یکتا از یک کلاس استفاده میشه.

اون Property که می بینی بحثش فرق می کنه. Singleton هست.

موفق!

----------


## iman_ad

متوجه شدم استاد فرقش با اینکه کلاس static تعریف کنیم چیه؟

----------


## Behrouz_Rad

> متوجه شدم استاد فرقش با اینکه کلاس static تعریف کنیم چیه؟


https://barnamenevis.org/showthread.php?t=87810

----------


## amir47

خواهش می کنم راهنمایی کنید موقع اجرا خطای زیر را صادی می کند .
*Server Error in '/GridView_Functions_by_Behrouz_Rad' Application.*
*Compilation Error* 
* Description:* An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately. 
* Compiler Error Message:* BC30561: 'Globalization' is ambiguous, imported from the namespaces or types 'System.Web, System'.
*Source Error:*
                                                          Line 151:            xCell.Controls.Add(btnSel)
Line 152:            xCell.Attributes.Add("align", "center")
Line 153:            xCell.BackColor = Color.FromArgb(Int32.Parse("5A49A7", Globalization.NumberStyles.AllowHexSpecifier))
Line 154:            xItem.Controls.Add(xCell)
Line 155:            e.Row.Cells(6).Controls.Add(xItem)                                                               
 *Source File:* D:\Documents and Settings\amir\Desktop\GridView_Functions_by_Behrou  z_Rad\Default.aspx.vb                *Line:*  153             

Show Detailed Compiler Output:

----------


## amir47

خواهش می کنم راهنمایی کنید موقع اجرا خطای زیر را صادی می کند .
*Server Error in '/GridView_Functions_by_Behrouz_Rad' Application.*
*Compilation Error* 
* Description:* An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately. 
* Compiler Error Message:* BC30561: 'Globalization' is ambiguous, imported from the namespaces or types 'System.Web, System'.
*Source Error:*
                                                          Line 151:            xCell.Controls.Add(btnSel)
Line 152:            xCell.Attributes.Add("align", "center")
Line 153:            xCell.BackColor = Color.FromArgb(Int32.Parse("5A49A7", Globalization.NumberStyles.AllowHexSpecifier))
Line 154:            xItem.Controls.Add(xCell)
Line 155:            e.Row.Cells(6).Controls.Add(xItem)                                                               
 *Source File:* D:\Documents and Settings\amir\Desktop\GridView_Functions_by_Behrou  z_Rad\Default.aspx.vb                *Line:*  153             

Show Detailed Compiler Output:

----------


## zahracomputer

سلام و خسته نیاشید
اول از زخمات جناب آقای راد کمال تشکر را دارم. من آخریت تسخع را دانلود و اجرا کردم که در صفحه خروجی پیغام زیر را نمایش می دهد:
Generating user instances in SQL Server is disabled. Use sp_configure 'user instances enabled' to generate user instances. 
و gridview خالی نمایش داده می شود.
ممنون از توجهتون

----------


## mandana.k

دوست عزيز من از اولين كد شما در رابطه با اعمال متداول Gridview دريكي از پروژ ههايم استفاده كردم وبسيار خوب بود ولي يك اشكالي كه در پروژه من ايجاد شده اين است كه پس از اضافه كردن يك رديف به gridview وزدن دكمه refresh مربوط به صفحهweb همين رديف دوباره به gridview اضافه مي شود بدون اينكه من رويدادي را اجرا كرده باشم لازم به ذكر است كه عمل اظافه كردن از اين طريق انجام مي شد OnRowCommand="doInsert" درحالي كه من دكمه اضافه را نمي زنم ولي با refresh كردن اين رويداد را اجرا مي كند :متفکر:

----------


## shirin_sh1024

واقعا ممنون 
میخواستم همون طوری که خودتون گفته بودید فقط با دکمه تشکر ازتون تشکر کنم ولی هر کاری کردم نتونستم خودم رو راضی کنم  :بامزه: 
خیلی عالی بود 
در ضمن ما ایرانیا عاشق چیزای مجانی هستیم که استفاده کنیم تا یه چیزی واسه دانلود کسی میزاره که جنبه آموزشی داره همه هول میشند و سریع میخوان همون رو حاضر آماده یه جا استفاده کنند واقعا حس بدی میده به کسی که روی اون کار زحمت کشیده .
دوستان فکر میکنم هدف این باشه که از این پروژه استفاده کنید برای آموزش و بعدا از اطلاعاتی که یاد گرفتید در پروژتون استفاده کنید نه اینکه کامل بخواید چیزی رو کپی پیست کنید تو پروژتون و هیچی ازش ندونید.

----------


## abdonsd

لطفا اگه میشه فایل دیتابیسش رو برام بفرستید تا اینور تو sqlserver ریستورش کنم
من یخورده با یوزرهای تو sqlserver ور رفتم قات زده کلا
این برنامه رو هم اجرا نمیکنه و تو کانکشن استرینگش ارور میگیره
مرسی

----------


## titrajh

اقا این برنامه خیلی محشر هست فقط اگر بگین که من چطوری میتونم به جدول ها تو پایگاه دادش دسترسی پیدا کنم تا بتونم توسعش بدم یا گزینه هارو اضافه کنم چون با qury analizor sqlserver زیاد آشنایی ندارم و همه کارامو با خود جدولا انجام میدم ممنون میشم

----------

