PDA

View Full Version : برگرداندن نام دکمه ها



ERIKA
پنج شنبه 31 شهریور 1390, 10:26 صبح
سلام
من برای سطح دسترسی ام تمام دکمه ها و نام فرم ها را در دیتا بیسم ذخیره کردم از اونجایی که نام تمام دکمه ها در فرم های من یکسان هستند
من برای مقایسه کردن دکمه هام با دیتابیسم از ترکیب نام فرم+نام دکمه ام میخام اسفاده کنم
حالا سوال اینه چطور میتونم نام دکمه ای را برگردانم
من اینطوری نوشتم ولی به جای نام یک عدد برمیگردونه نام اون دکمه را
thisForm.Name+thisForm.Bottom

morteza271
پنج شنبه 31 شهریور 1390, 10:40 صبح
اول از همه باید بگم که روشتون برای سطح دسترسی دادن به نظر من خیلی اشتباه و بعدا به احتمال زیاد به مشکلات زیادی برخواهید خورد.

اینم جواب سوالتون :
this.Search.Name

ERIKA
پنج شنبه 31 شهریور 1390, 11:02 صبح
سلام
این من نوشتم این سرچ چی هست؟اصلن نمیاره ...چطور باید تعریفش کنم
چرا میگین اشتباه...اگر میشه علت اش را بگین؟یا پیشنهاد بهتر بدید؟

morteza271
پنج شنبه 31 شهریور 1390, 11:10 صبح
Search اسم کلید هستش دیگه!!شما به جای اون کلید خودتون رو بنویسید.

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

ERIKA
پنج شنبه 31 شهریور 1390, 11:49 صبح
بله درسته ...به جای بستن دکمه ،کد پشت دکمه را شما منظورتون محدود کنم(insert+delete+edit+select)
ولی سر اینکه همان کد قبلی را پیاده کنم کلی مشکل داشتم
حالا میشه برای همین یک نمونه کد بگذارید



درمورد اون دکمه هم پشت همان فرم نمیخام استفاده کنم این داخل یک کلاس هست
من تکه کدش را میزارم مشکل اونجاست که نارنجی اش کردم

publicForm CheckAccessControls(Form thisForm)
{
DataTable dtb = newDataTable();
GetList("UserID=" + UserID + " and SubjectID='" + thisForm.Name + thisForm.Bottom + "'", "Tbl_SecurityPermission", ref dtb);
for (int i = 0; i < thisForm.Controls.Count; i++)
{
try
{
EnabelControls(thisForm.Controls[i], dtb);
}
catch
{
}
}
return thisForm;
}

morteza271
پنج شنبه 31 شهریور 1390, 12:06 عصر
منکه جایی رو نارنجی نمیبینم!!!!!!!!
این Bottom یکی از کلیدهای فرمتون هست یا نه؟اگه کلید فرمتونه که یه .Name هم بعدش بذارین دیگه!

ERIKA
پنج شنبه 31 شهریور 1390, 12:26 عصر
نه اگر کلید فرم بود که مشکلی نداشتم .این توی یک کلاس دیگه است
چطور در این قسمت thisForm.Name نام فرم برای من برمیگردانه به همین ترتیب هم من میخام نام اون دکمه را برگردانه

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

morteza271
پنج شنبه 31 شهریور 1390, 12:41 عصر
نمیدونم من متوجه نمیشم یا شما درست توضیح نمیدین!!!!!!!
شما میخوای که thisForm.Bottom چی رو برگردونه اسم یک کلید خاص که اسمش bottom یا چیز دیگه ای؟؟؟
بیشتر توضیح بدین.

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

ERIKA
پنج شنبه 31 شهریور 1390, 12:54 عصر
این thisForm.Bottomاشتباه هست این من همینجوری نوشتم که شما متوجه بشید و نارنجی اش هم کردم... برای من یک عدد برمیگردونه من میخام نام هر دکمه را برگردانه ولی همیچین خصوصیتی را نداره
من این تابعی که برای شما گذاشتم را پشت دکمه میخام صدا کنم و خودش نام هردکمه+نام هر فرم را برای من برگردانه همین!
نام فرم میتونم برگردونم ولی نام دکمه را نتونستم

ERIKA
پنج شنبه 31 شهریور 1390, 13:02 عصر
راستی در مورد اون سوالم هم من خیلی گشتم سطح ذسترسی ها خیلی سطح پایین و پیش پا اوفتاده بود
و خیلی کم الگوریتم را یک اشاره کوچک کرده بود
من خیلی گشتم چیز به درد بخور پیدا نکردم با کد و نمونه درست حسابی پیدا نکردم
اگر کسی چیزی در مورد یک سطح دسترسی پویا داره اینجا بذاره من واقعا کارم گیره اینه!

morteza271
پنج شنبه 31 شهریور 1390, 13:11 عصر
خوب شما اگه به جای Bottom اسم کلید روی فرمتون رو بنویسید درست میشه دیگه.

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