-
دوشنبه 21 شهریور 1384, 17:56 عصر
#1
کاربر دائمی
اضافه کردن چندین بار یک کنترل با یک بار new کردن
با سلام
برای اضافه کردن چند باره یک کنترلی که فقط یکبار new شده، به مشکل برخورد کردم.
همونطور که میدونید اگه یک آبجکت فقط یکبار new شده باشه تنها یکبار میشه از این نمونه برای کاربردی که من میخوام، استفاده کرد و برای استفاده مجدد باید دوباره new بشه!
که در صورت عدم نمونه سازی مجدد کنترل مورد نظر تنها به آخرین محل اضافه شده واقعا اضافه میشود.
حال اگر امکان نمونه سازی مجدد وجود نداشته باشه، آیا راهی وجود داره؟
البته با استفاده از Activator.CreateInstance با سختی بسیاری مشکلم حل میشه، چون باید تمام property ها رو دوباره ست کنیم!
آیا راه حل ساده ای وجود داره؟
-
دوشنبه 21 شهریور 1384, 18:09 عصر
#2
VIP
سلام
می تونی از آرایه ها استفاده کنی ولی احتمالا کارت اشتباه است
در صفحه ات نمی تونی از Repeater استفاده کنی
-
سه شنبه 22 شهریور 1384, 18:35 عصر
#3
کاربر دائمی
سلام
مثل اینکه متوجه نشدید! اینقدرها هم ساده نیست.
من دارم یه کنترلی مینویسم که یه property داره که یه کنترل میگیره و میخواد اونو به تعدادی خاص به یه آیتم اضافه کنه!
حالا این کنترلی که توسط کاربر 1 بار فقط new شده (نمونه سازی شده) چطوری میشه چند بار اضافش کرد.
چون اگر به ازای هر بار ضافه شدن new نشه، این کنترل فقط به آخرین نقطه اضافه شده توسط کد من، اضافه میشه!
حالا روشی وجود نداره که بشه بدون اینکه کنترل رو به تعداد مورد نیاز new کنیم (چون در اینجا امکانش وجود نداره) کنترلها رو بشه اضافه کرد.(با تمام propertyهای ست شده توسط کاربر!)
-
سه شنبه 22 شهریور 1384, 18:40 عصر
#4
کاربر دائمی
راستی یادم رفت که بگم:
اگه از Activator.CreateInstace استفاده کنیم(روشی که هم اکنون به عنوان تنها راه حل پیدا شده!) میشه فقط یه نمونه خالی (بدون propertyهای ست شده) ساخت، که کار ست کردن دوباره خواصی که توسط کاربر ست شده، بایستی توسط کد خودم انجام بشه! که کار بسیار سختیه، چون باید به ازای تمامی کنترلهای موجود کدهایی برای هندل کردن propertyها نوشته بشه!!!
-
چهارشنبه 23 شهریور 1384, 21:56 عصر
#5
کاربر دائمی
سلام
خودم یه راه خیلی بهتر براش پیدا کردم!
اینجا میذارمش تا دیگران هم استفاده کنند.
اگر کلاس مورد نظر اینترفیس ICloneable رو ایمپلیمنت کرده باشه، براحتی میشه با تابع Clone یه نمونه دیگه از نمونه مذبور ساخت.
اما تقریبا هیچکدوم از کنترلهای Web و Html این اینترفیس رو ایمپلیمنت نکردند! چیکار باید کرد :
بایستی کنترل خاص خودمونو بنویسیم که از کنترل مورد نظر مشتق شده باشه و ICloneable رو هم ایمپلیمنت بکنه!
بعدش باید متد Clone رو هم براش بنویسیم!
که تو این تابع برای اینکه تمام propertyها هم برگردونه بشه بایستی از تابع protected زیر رو که یه object برمیگردونه، استفاده بشه:
()MemberwiseClone
به همین راحتی!!!
قوانین ایجاد تاپیک در تالار
- شما نمی توانید تاپیک جدید ایجاد کنید
- شما نمی توانید به تاپیک ها پاسخ دهید
- شما نمی توانید ضمیمه ارسال کنید
- شما نمی توانید پاسخ هایتان را ویرایش کنید
-
قوانین سایت