+2 امتیاز

سلام وقبل از همه چیز ممنون از وقتی که میگذارید . راهنمایی که میدید

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

من یه برنامه نمونه ساختم که با استفاده از برنامه نویسی چند لایه و با کلاس بندی و بدون ویزارد و با کد نویسی به دیتا بیس وصل شده من برای اینکه تو شبکه یا وقتی کسی با اینترنت به برنامه وصل میشه سرعت لود پایین نیاد میخوام برنامه به این صورت که توضیح میدم عمل کنه قاعدتا موضوع امنیت هم وسط میاد پس با کلی تحقیق به این نتیجه رسیدم که باید این روش استفاده بشه لطفا جای نقد اگه راه حلی دارین یا میدونید چیکار کنم برنامه رو ادیت کنید من هم از روش یک آموزش می سازم میذارم تو سایت تا همه استفاده کنن نمونه اولیه برنامه رو هم برای دانلود تو ادامه مطلب گذاشتم برنامه با ویژوال استدیو 2013 و زبان C# و دیتابیس SQL Server 2014 ساخته شده بک آپ دیتا هم تو فایل ضمیمه شده

در درجه اول میخوام بدون استفاده از ویزارد bindingNavigator به DataGridView وصل بشه با کد نویسی و استفاده از کلاس نه اینکه تو هر فرم بیایم کانکشن بسازیم میخوام جای اون از کلاس فراخوانی کنیم و جای اینکه کل دیتا رو بیاریم تو DataGridView از SQL Server مثلا 10تا 10 تا دیتا فراخوانی بشه مثلا با این دستور

Select Top (10) * from Ware Order By ID

و جستجو هم از همانجا یعنی SQL انجام بشه اینجوری هم اور لود برنامه خیلی پایین میاد هم امنیت بالا میره هم ترابل شوتینگ راحت میشه هم برنامه با استاندارد پیش میره

برنامه باید 7تا گزینه اصلی داشته باشه ( بعدی، قبلی، اولی، آخری، صفحه بعد و صفحه قبل و سرچ ) که ( بعدی، قبلی، اولی، آخری ) درست کار میکنه واسه صفحه بعد  کافیه مثلا بگیم TOP هرچی هست +10 بشه و مثلا از 1تا 10 بره 11تا20 یا برعکس -10 بشه برای صفحه قبل کد سرچ هم که راحته بعدی قبلی اولی و آخری هم که وقتی bindingNavigator وصل بشه به DataGridView خود به خود انجام میشه در کل اگه بتونید فقط bindingNavigator  رو تو برنامه نمونه من درست وصل کنید بقیش رو خودم تکمیل میکنم با آموزش کامل میذارم تو سایت اصل مبحث هم تو قسمت نظرات سایت هستش 

http://www.w3-farsi.com/%D8%A7%D8%AA%D8%B5%D8%A7%D9%84-%D8%A8%D9%87-%D8%AF%DB%8C%D8%AA%D8%A7%D8%A8%DB%8C%D8%B3-%D8%A8%D8%A7-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-%D8%A7%D8%A8%D8%B2%D8%A7%D8%B1%D9%87%D8%A7/

باز هم شرمنده وقتتون رو گرفتم و ممنون از کمکتون

این هم لینک دانلود برنامه نمونه

http://cnmeysam.persiangig.com/C sharp/class_library_Connection.zip/download

http://cnmeysam.persiangig.com/C sharp/class_library_Connection.rar/download

بسته شده

1 پاسخ

+3 امتیاز
 
بهترین پاسخ

سلام دوست خوبم ، ببینید در کامنت های قبلی هم گفتم که بهترین روشی که برای Paging وجود داره اینه که عمل صفحه بندی رو در سطح Database انجام بدین . چون که شما از SQL Server استفاده می کنید خیلی راحت می تونید این عمل رو انجام بدین . من خلاصش رو می گم . ببینید شما باید ابتدا سطر های پایگاه داده رو از 1 شماره گذاری کنید ( تابع ROW_NUMBER در SQL Server می تونه این کار رو براتون انجام بده ) ، بعد از این کار شما باید عمل فیلترینگ رو بر اساس این ستون انجام بدین . مثلا فرض کنید قصد دارید در هر صفحه 100 رکورد رو نمایش بدین ، قسمت Where ش به صورت زیر میشه :

WHERE number between 1 and 100 ( )

ستون number رو با استفاده از همون تابع ROW_NUMBER ایجاد می کنیم 

برای صفحه بعدی

WHERE number between 101 and 201

و به همین صورت .

مزایای این روش اینه که عمل صفحه بندی در سطح Database انجام میشه و واسه کار شما که می خواین داده ها رو در طول شبکه انتقال بدین بهترین روش هست. اون روشی که در پیش گرفتید روش جالبی نیست چونکه عمل صفحه بندی در برنامه انجام میشه . ممکنه در تعداد رکورد های پایین مشکلی ایجاد نکنه ولی در تعداد رکورد های بالا به شدت کند میشه چون برنامه بیشتر وقتش رو در RAM صرف می کنه و باید تمامی رکورد ها در حافظه Load بشن که به شدت ایده بدی هست و Performance و سرعت برنامه به شدت پایین میاد . خودم در طراحی برنامه هام اصلا از BindingSource و Navigator استفاده نمیکنم و ترجیح می دم از همین روش کد نویسی استفاده کنم . چون بهترین روش هست به نظرم و دستتون برای طراحی و دستکاری برنامه بسیار بازه .

بنده برنامه شما رو تغییر دادم . در این برنامه یک کلاس هست به نام PageBoundries که عمل اندیس گذاری صحیح رکورد ها رو انجام میده . وقتی که اندیس ها مشخص شدند خیلی راحت می تونید یک کوئری که در کامنت های قبلی هم نوشتم روش بانک اجرا کنید و سطر ها رو واکشی کنید . سعی کردم کدها رو واضح بنویسم . هر جایی از کدها سوالی داشید بپرسید . به طور خلاصه اومدم یک BindingNavigator بهینه طراحی کردم .

چیز هایی که شما باید تغییر بدین واس برنامه خودتون :

1 – رشته اتصال

2 – کوئری بدست آوردن تعداد رکورد های جدول مورد نظرتون ( TotalRecords )

3 – کوئری واکشی اطلاعات یا همون List .

اینا رو بسته به بانک اطلاعاتی خودتون ویرایش کنید .

 

اینم پروژش :

http://cld.persiangig.com/dl/FQXoV/7ZCPwI3kxX/PagingWithBindingNavigator.zip

با کلی بدبختی فایل رو درست کردم هم ذخیره کردم هم فراخوانی میشه یکی کمک کنه بگه چطور تو یک کلاس کانکشن استرینگی که تو فایل تکست ذخیره کردم فراخوانی کنم و تو کانکشن استرینگ جایگزین کنم!!!؟؟؟
|لینک دانلود پروژه::http://cnmeysam.persiangig.com/C%20sharp/Connection.zip/download|
توسط (107 امتیاز) 1 1 5

ممنون از وقتی که گذاشتین 

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

 

Data Source=maysam;Initial Catalog=DtaConnection;Integrated Security=True

 

حاا نمیدونم چطور تو کلاس کانکشنم بیارمش جای کانکشن استرینگ یعنی اینجا:

 

 

     public string ConnectionString = "Data Source=.;Initial Catalog=DtaConnection;Integrated Security=True";

 

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

 

توسط (107 امتیاز) 1 1 5
سوال جدید

2,335 سوال

2,871 پاسخ

3,725 دیدگاه

3,916 کاربر

دسته بندی ها

...