PDA

View Full Version : سوال: برگرداندن کنترل لیبل از یک کامپوننت ساده



mehdi-ghafari
چهارشنبه 17 آذر 1389, 17:43 عصر
سلام دوستان
من توی صفحاتم یه لیبل دارم که این لیبل تو یک پنل گذاشته شده برای نمایش پیغام های مناسب
هر وقت که نیاز به نمایش یک پیغام باشه باید پارامترهای زیر رو به تابع درون صفحه ای که ایجاد کردم پاس بدم
پیغام مورد نظر (رشته)
مقدار True(جهت نمایش پنل چون هیدن هست)

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

اگه ممکنه یکم منو راهنمایی کنید
ممنون

alonemm
جمعه 19 آذر 1389, 19:55 عصر
میتونید کد HTML رو که ساخته اید رو به قسمت text یک لیبل بدید.

Kia_MLS
جمعه 19 آذر 1389, 20:25 عصر
سلام
دوست عزیز، برای انجام این کار راه های زیادی وجود داره
من 2 راه ساده رو واست توضیح میدم:

1- در زمان طراحی صفحه نیاز به Lable نداری، میتونی اونو در زمان اجرا، هنگامی که میخوای اطلاعات رو به کاربر نشون بدی بسازی
مثال:



Label lbl = new Label();
lbl.Text = "your message here";
pnlMessage.Controls.Add(lbl);


2- توی Panel یک Lable با آی دی مشخص، مثلا lblMessage بزار، زمانی که میخوای پیغام رو نشون بدی از کد زیر استفاده کن:


var lbl = pnlMessage.FindControl("lblMessage") as Label;
lbl.Text = "Your message here";


موفق باشی

mehdi-ghafari
شنبه 20 آذر 1389, 15:39 عصر
ممنون از توجه تون
سوالم رو واضح تر مطرح می کنم

من توی صفحاتی که عملیاتی رو از طریق بانک اطلاعات انجام می دن برای نمایش پیغام های برگشتی کنترل های زیر رو توی صفحه قرار می دم


<asp:Panel ID="pnlMessage" runat="server" Visible="false">
<asp:Label ID="lblMessage" runat="server" />
</asp:Panel>

و توی هر صفحه که نیاز به نمایش پیغام باشه ساب روتین زیر رو هم می نویسم


Sub Messages(ByVal msg As String)
lblMessage.Text = msg
pnlMessage.Visible = True
End Sub

حالا می خوام کاری کنم که توی تمام صفحات مدام این ساب روتین رو تکرار نکنم
باید چکار کنم

ممنون

Kia_MLS
شنبه 20 آذر 1389, 17:53 عصر
ممنون از توجه تون
سوالم رو واضح تر مطرح می کنم

من توی صفحاتی که عملیاتی رو از طریق بانک اطلاعات انجام می دن برای نمایش پیغام های برگشتی کنترل های زیر رو توی صفحه قرار می دم


<asp:Panel ID="pnlMessage" runat="server" Visible="false">
<asp:Label ID="lblMessage" runat="server" />
</asp:Panel>

و توی هر صفحه که نیاز به نمایش پیغام باشه ساب روتین زیر رو هم می نویسم


Sub Messages(ByVal msg As String)
lblMessage.Text = msg
pnlMessage.Visible = True
End Sub

حالا می خوام کاری کنم که توی تمام صفحات مدام این ساب روتین رو تکرار نکنم
باید چکار کنم

ممنون

میتونی یک کلاس ساده بنویسی که یک تابع در آن تعریف شده، ورودی تابع یک کنترل از نوع Panel و یک رشته است که قراره به کاربر نشان داده بشه
همون کدهای بالا رو با یه مقدار تغییر میتونی توی این تابع بزاری
کد مربوط به این کلاس:



using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace MyPrj
{
public class MyMessages
{
public static void ShowMessage(System.Web.UI.WebControls.Panel panel, string Message)
{
var lbl = panel.FindControl("lblMessage") as System.Web.UI.WebControls.Label;
lbl.Text = Message;
panel.Visible = true;
}
}
}



نحوه فراخوانی:


MyPrj.MyMessages.ShowMessage(pnlMessage, "Hello world");