PDA

View Full Version : روش طراحی منوی edit



mohammady2
پنج شنبه 23 خرداد 1387, 06:50 صبح
سلام من یه برنامه برای یکی از ادارات دارم مینویسم.
برنامه اطلاعات یه فرم رو که هر فرم سه بخشه داره رو میگیره.هر بخش حاوی حدود 15 16 مورد هست ...هر بخش رو در یک جدول ذخیره کردم.که کلید اصلی مشترک همه اونها شماره فرمه.

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

top7news
پنج شنبه 23 خرداد 1387, 12:18 عصر
سلام
این سئوالی که شما پرسیدی رو من ربطش رو به منوی ادیت نمی فهمم؟ یعنی شما می خوای توی منوی بالای صفحه گزینه edit رو اضافه کنی و بعد اون کارهایی که لازم داری رو انجام بدی ؟

برای اینکار من یه پیشنهاد بهت دارم ، توی solution explorer گزینه Data Source رو اضافه کن و بعد هر جدولی که لازم داری رو add کن اونجا
بعد هر جدولی که ادد کنی این امکان رو بهت میده که اون جدول رو به یکی از چند حالت دیتا گرید ویو ، کامبو باکس ، تکست باکس و ... به فرمت اضافه کنی .
خوبیه این کار اینه که برای جدولت بهت یه tab control هم میده که عمل درج ، حذف و ذخیره رو خودش داره
همچنین گزینه های دیگه .
فقط این نکته رو هم بگم که اگر چندتا جدول رو به این روش بخوای بیاری فقط برای جدول اولت tab control اضافه میشه و برای جدول های دیگت خودت باید Tab controlبیاری و اونو به جدول مورد نظرت بایند کنی .
اگر درست منظورتو نفهمیده بودم یه کم واضحتر بگو تا راهنماییت کنم .

khoshtip118
پنج شنبه 23 خرداد 1387, 18:56 عصر
tab control رو هم ميتوني با تعريف كردن سه تا button سوزسشو تغيير بدي ولازم نيست كه حتما جديد تعريف كني

mohammady2
یک شنبه 26 خرداد 1387, 09:34 صبح
برای اینکار من یه پیشنهاد بهت دارم ، توی solution explorer گزینه Dzta source رو اضافه کن و بعد هر جدولی که لازم داری رو add کن اونجا

اگر درست منظورتو نفهمیده بودم یه کم واضحتر بگو تا راهنماییت کنم .
متاسفانه من این کامپوننتی رو که گفتین پیدا نکردم .کجاست؟دانلودیه؟

gdevnb
یک شنبه 26 خرداد 1387, 09:46 صبح
سلام
همون طور که دوستان گفتن از ویزارد استفاده کن.که با همون TabControl قابل پیاده سازیه و می ونی Heder شو هم مخفی کنی.

top7news
یک شنبه 26 خرداد 1387, 10:05 صبح
سلام
این کامپوننت نیست ،برای اضافه کردن این گزینه به solution Explorer باید از این مسیر بری :

توی منوی برنامه (ویژوال استودیو) موقعی که برنامه ات رو باز کردی از اون منو های بالا گزینه Data و بعد Show Data source رو میزنی
حالا وقتی این گزینه اضافه بشه ، میاد دقیقا کنار Solution Explorer یه تب دیگه به اسم Data Source اضافه میشه ، روی اون کلیک میکنی و بعد چون اولین باره ، هنوز دیتا سورسی وجود نداره و یه نوشته آبی رنگ هست که روش نوشته Add New Data Source روی اون کلیک می کنی و بانکت رو انتخاب می کنی و اون جدولی که لازم داری رو انتخاب می کنی
حالا تمام فیلد های اون بانکت در اختیارت هستن .

مهدی رحیم زاده
یک شنبه 26 خرداد 1387, 16:47 عصر
سلام دوست عزیز
شما چرا خودتون فرو رو طراحی نمی کنید . منظورم اینه که هر سه تا فرم رو خودتون طراحی کنید با TextBox و ... بعد کافیه که سه تا Select روی جداول انجام بدی و این TextBoxها رو با مقادیر Select شده پر کنی .
نهایتا هم کافیه که Table هاتو با مقادیر جدید TextBoxها UPdate کنی .
ممکنه سئوال بشه : این که همون روش بالاست پس چرا من دوباره گفتم همه اون کارا را دستی انجام بدین اون که خودش به صورت ویزارد انجام میده ؟؟؟؟؟
مزیت این روش اینه که اگر از ویزارد استفاده کنید و مثلا 5000 رکورد داشته باشید و کاربر بخواد مثلا رکورد شماره 3250 رو ویرایش کنه اون موقع باید 3250بار کلیک انجام بده تا بتونه به اون داده مورد نظر دسترسی پیدا کنه !!!!!
اما توی روشی که این کار رو دستی انجام میدیم کاربر اول با یک جست و جو « همون دستور های Select » توی کمترین مدت به داده های مورد نظر میرسه و میتونه اونا رو ویرایش کنه .
البته من این اندازه در مورد ویزارد اطلاع داشتم اگه روشی برای دستیابی به داده ها داره من نمی دونم .
امیدوارم که تونسته باشم کمکی کرده باشم .
اگه نیازی به نمونه برنامه هم داشتید بگید تا براتون بزارم .
موفق باشید .

top7news
دوشنبه 27 خرداد 1387, 00:38 صبح
سلام دوست عزیز
در مورد 3250 تا رکورد لازم نیست که حتما 3250 بار کلیک کنیم ، توی navgation bar که توسط خود دات نت برای این داده های بایند شده به فرم اضافه میشه یه قسمت هم وجود داره که شما میتونین عدد رکورد مورد نطرت رو تایپ کنی و به اون رکورد برسی ،
ضمنا حتی اگه لازم باشه دستی کد نویسی کرد بازم میشه توی همین داده های بایند شده این کار رو انجام داد و به نظر من مزیت اسن روش در سرعت پیاده سازی و بهینه بودن کدهایی که توش استفاده میشه .
اگه کدهایی که توی این ویزارد تولید میشه رو دیده باشین با 2 3 خط کد کاری رو که با 10 خط کد لازمه انجام بدیم برامون انجام داده .

مهدی رحیم زاده
دوشنبه 27 خرداد 1387, 06:13 صبح
سلام دوست عزیز
در مورد 3250 تا رکورد لازم نیست که حتما 3250 بار کلیک کنیم ، توی navgation bar که توسط خود دات نت برای این داده های بایند شده به فرم اضافه میشه یه قسمت هم وجود داره که شما میتونین عدد رکورد مورد نطرت رو تایپ کنی و به اون رکورد برسی ،
ضمنا حتی اگه لازم باشه دستی کد نویسی کرد بازم میشه توی همین داده های بایند شده این کار رو انجام داد و به نظر من مزیت اسن روش در سرعت پیاده سازی و بهینه بودن کدهایی که توش استفاده میشه .
اگه کدهایی که توی این ویزارد تولید میشه رو دیده باشین با 2 3 خط کد کاری رو که با 10 خط کد لازمه انجام بدیم برامون انجام داده .
راستش من خودم قبلا از این روش استفاده می کردم . اما اصلا از اون خوشم نیومد . آخه یه خورده ای به نظر من جالب نبود . اما با این مسائلی که شما گفتید بد هم نیست . بستگی به طبع خود برنامه نویس داره . ممنون از اینکه لطف کردین و توضیح دادین .

mohammady2
دوشنبه 27 خرداد 1387, 12:45 عصر
سلام دوباره به دوستان.
باراهنمایی شما از امکاناتی که datasource راحت در اختیار قرار میده تصمیم گرفتم ویرایش فرم رو در چند مرحله انجام بدم :

ابتدا در دیتا گرید ویو فرم اول اطلاعات اولین بخش( بخش اصلیتر ) رو نشون بدم.

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

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

کلید اصلی مشترک همه جدولها یک شماره است:این کارا رو کردم ... نشد:
اینو تو فرم دوم گذاشتم .


bindingSource1.Filter = "shomare like '" + cell_num+"%'"

cell num رو در فرم اول پابلیک کردم و


cell_num = bindingSource1.Position

و به فرم بعد فرستادم

top7news
دوشنبه 27 خرداد 1387, 14:47 عصر
راستش من جواب این سئوال رو نمیدونم چون سئوال خودم هم بود .
اگر شما به جواب رسیدین همینجا جوابتون رو بذارین که من و بقیه هم استفاده کنیم .
ممنون

مهدی رحیم زاده
دوشنبه 27 خرداد 1387, 16:12 عصر
اما مشکلم اینه که نمیدونم چطور باید شماره رکورد انتخاب شده رو به فرم دوم بفرستم
و datagrid فرم دوم فقط همون رکورد رو نشون بده تا راحت تر ویرایش بشه.یعنی فیلترش کنه. البته اصراری در فیلتر شدن نیست همینکه بره روی رکوردی که در فرم قبل انتخاب شده باز هم کافیه.
اگه از کد نویسی به صورت دستی استفاده می کردین خیلی ساده بود این کار ، اما با ویزارد نمی دونم . اگه فهمیدین ، مشتاقم که یاد بگیرم .
با روش دستی یه Select ساده نیاز داره . همین .