PDA

View Full Version : کنترل های ارایه ای



pernia
یک شنبه 25 فروردین 1387, 04:08 صبح
سلام دوستان.
موردی که برای من پیش اومده اینه که راه حل مناسبی برای ساختن object هاو handle کردن event هاشون در asp.net 2.0 پیدا نکردم!
من میدونم که در page_load میشه این کار رو کرد! و handle کردن event هاشون هم راحت هست!
راستش اینطور که پیداست در asp.net حق نداریم در بلاک <% %> برای صفحه، object خلق کنیم ! در حالی که در asp قدیمی میشد!!!!!!
مثال های اینترنتی نشون میده که ظاهرا فقط در page_load میشه کنترل خلق کرد.
من هم از page_load استفاده کردم ، اما حالا عیب دیگه اینه که در page_load در قرار دادن اشیاء در تگ های html که با شیئ response مینویسم نمی تونم جای این object هایی رو که خلق میکنم ، تعیین کنم و هیشه همشون پشت سر هم قرار میگیره؟
مثلا با دکمه امتحان کردم نشد!!!!! هر 10 تا دکمه ، همش پشت سر هم افتاد و اصلا تگ table چاپ نشد!!!!
به نظر شما چرا؟

twelve
یک شنبه 25 فروردین 1387, 10:53 صبح
در page_load در قرار دادن اشیاء در تگ های html که با شیئ response مینویسم نمی تونم جای این object هایی رو که خلق میکنم ، تعیین کنم و هیشه همشون پشت سر هم قرار میگیره؟
مثلا با دکمه امتحان کردم نشد!!!!! هر 10 تا دکمه ، همش پشت سر هم افتاد و اصلا تگ table چاپ نشد!!!!
به نظر شما چرا؟

این طور نیست! آبجکت های html رو به راحتی میتوان با این روش خلق کرد. احتمالا کدی که نوشتید اشتباهه. صحبت شما فقط در مورد OBJECT های سمت سروری صدق میکنه که بخواین اونها رو با دستور Response (یا دستورات دیگه ) به صورت بلوکی از سمت Code behind ویا در بلوک <% %> ایجاد کنید.منظورم اون اشیاییست که بلوکشون به شکل <asp:></asp> باشه و این هم کاملا طبیعیه چون دستور Response یا InnerHtml یا ... در زمان رندر شدن نتایج پردازش سمت سرور به html اجرا میشن یعنی وقتی که پردازش های سمت سرور تمام شده پس در اون موقع نمیتونید کنترل سمت سرور ایجاد کنید! برای مثال شما نمیتونید یک شی Label رو به این صورت ایجاد کنید :


Response.Write("<asp:Label id =Label1 Runat=Server>Label</asp>")

در ASP کلاسیک هم آبجکت های ایجاد شده از جنس HTML هستند و به همین خاطر شما میتونید با دستور Response اونها رو به وجود بیارید.
برای ایجاد اشیا سمت سرور در دات نت می بایست از کلاسهای سازنده اونها استفاده کنید


Private Lbl As Label

Event ها رو هم با با استفاده از Deligate میتوانید به آبجکت نسبت دهید.