PDA

نسخه کامل مشاهده نسخه کامل : مشکل در طراحی کنترل وب



ahmadb
06-10-2009, 23:37
سلام
من دارم یه کنترل طراحی می کنم که توی اون نیاز دارم چیزایی که بین تگ شروع و پایان تعریف کنترلم موقع استفاده قرار می گیره رو بفهمم مثلا :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

توی این مثال می خوام از داخل کنترل وب عبارت salam رو که بین تگ شروع و پایان قرار گرفته رو بفهمم .
چجوری می تونم این کارو بکنم ؟

_H2_
09-10-2009, 23:28
سلام

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

ahmadb
09-10-2009, 23:28
کسی در این مورد چیزی نمی دونه ؟

ahmadb
11-10-2009, 12:18
_H2_ عزیز ممنون . درست کار کرد ( البته منظور من از کنترل وب همین فایلهای ascx. بود که توی خود وب سایت می سازیم نه Web Control Library ولی مهم نیست ، مهم درست کار کردنشه که خدا رو شکر کار کرد)
اما یه سؤال دیگه :
من می خوام بین تگ شروع و پایان محتوای دو قسمت رو مشخص کنم (یکی عنوان و یکی هم متن اصلی) مثلا کنترل DataList رو فرض کنید که میشه این طوری تعریفش کرد :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

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

_H2_
11-10-2009, 14:45
سلام
برای اینکار کافی است property هایی برای استفاده از واسط System.Web.UI.ITemplate در کدتان مستقر کنید.
نمونه کد:
msdn.microsoft.com/en-us/library/system.web.ui.itemplate.aspx

ahmadb
12-10-2009, 13:19
سلام
برای اینکار کافی است property هایی برای استفاده از واسط System.Web.UI.ITemplate در کدتان مستقر کنید.
نمونه کد:
msdn.microsoft.com/en-us/library/system.web.ui.itemplate.aspx

من به این آدرس رفتم و برنامه ی نمونه رو هم گرفتم ولی اصلا کار نکرد . شما قبلا این کار رو کردید ؟

_H2_
12-10-2009, 21:55
سلام

شما قبلا این کار رو کردید ؟
گمانم احتمالاً یک چیزهای اندکی از ASP.Net و امکاناتش بلد هستم و کار کردم !


من به این آدرس رفتم و برنامه ی نمونه رو هم گرفتم ولی اصلا کار نکرد
یعنی کدی مثل این نوشتید ولی کار نکرد !

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

ahmadb
13-10-2009, 13:22
_H2_ جان شما دیگه شدی فرشته نجات من
دیگه از بس توی MSDN و اینترنت دنبال نمونه کد برای ITemplate گشتم و چیزای عجیب و غریب و پیچیده پیدا کردم که هیچ کدوم کار نکرد (یا بهتر بگم ،‌من نتونستم ازشون استفاده کنم) داشتم به دیار باقی می شتافتم !
دمت گرم کد شما کار کرد اما اولا یه نکته ، ثانیا یه سؤال دیگه :

نکته : برای این که این کد کد کنه باید ParseChildren کلاس True باشه که شما در جواب سؤال اول بنده گفته بودید که باید False باشه که البته درمورد اون سؤال درست بود

سؤال : من از کنترلم توی DataList استفاده می کنم و نیاز دارم که به صورت <%("Eval("Field #%> به فیلدهای دیتابیس دسترسی داشته باشم (از داخل کنترلم) یعنی :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

اینو چجوری می تونم انجام بدم؟
ممنون

_H2_
13-10-2009, 14:55
سلام

برای این که این کد کد کنه باید ParseChildren کلاس True باشه که شما در جواب سؤال اول بنده گفته بودید که باید False باشه که البته درمورد اون سؤال درست بود
تعریف ParseChildren برای کدی که در پست 7 برایتان نوشتم بی تاثیر است، اگر امتحان عملی کنید متوجه خواهید شد.


اینو چجوری می تونم انجام بدم؟
قادتاً این کار باید خودکار انجام شود و کد کاری خاصی از سوی شما نیاز ندارد، امتحان کنید.

موفق باشید.

ahmadb
13-10-2009, 17:03
تعریف ParseChildren برای کدی که در پست 7 برایتان نوشتم بی تاثیر است، اگر امتحان عملی کنید متوجه خواهید شد.
حرف شما درسته ولی منظور من این بود که این دو تا کار (پست 3 و پست 7) با هم قابل انجام نیستند


قادتاً این کار باید خودکار انجام شود و کد کاری خاصی از سوی شما نیاز ندارد، امتحان کنید.

من اول امتحان کردم بعد پست زدم
وقتی که داخل کنترل از Eval استفاده می کنم فکر می کنه که باید مقداری رو از توی کنترل برگردونه نه از توی DataList.
یعنی دسترسی به DataList از توی کنترل امکان نداره ! شما امتحان کنید ...
البته اگه خواستید من کنترلی رو که طراحی کردم میذارم اینجا تا ببینید چی میگم

ahmadb
13-10-2009, 18:33
اینم کنترلی که طراحی کردم با یه برنامه نمونه (لینک مستقیم ، حجم : 45 کیلوبایت) :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

_H2_
16-10-2009, 17:01
سلام
جواب شما را به تاخیر انداختم تا شاید وقت کنم و برای راه حل ساده جستجویی در سایت مایکروسافت انجام دهم ولی متاسفانه وقت نکردم.

=====

من خودم هر وقت در Bind های پیچیده در وب گیر میکنم از روش زیر مشکلم را حل میکنم و همیشه جواب داده...
شما یک حالت تودرتویی دارید ...
راه حل فعلی شما که مشکلتان را حل خواهد کرد ان است که از رویداد ItemDataBound کنترلر بالاسری (DataList شما) استفاده کنید و سطر جاری اطلاعات را از e.Item.DataItem دستی تحویل نمونه کنترلر خودتان در همان سطر بدهید.

(
با کمک کدنویسی رویداد ItemDataBound میتوان حالات پیچیده را با کد سفارشی و دستی حل و فصل کرد.
کمی کدنویسی دارد ولی در حالات خاص خوب جواب میدهد.
)

موفق باشید.

ahmadb
16-10-2009, 22:23
از راهنماییتون ممنون
اما چون من به این کنترل خیلی نیاز دارم و جاهای خیلی زیادی ازش استفاده می کنم ، به نظر عاقلانه نمی یاد که از این روش استفاده کنم . فکر کنم بهتره که هرجایی که نیازش داشتم کد HTML سازندش رو کپی و پیست کنم که هیچ نیازی به تغییر یا کد نویسی مجدد نداره
بازم از اینکه برای سؤال من وقت گذاشتید تشکر می کنم