PDA

View Full Version : چگونه صدا زدن یک متد از وی یوزر کنترل



tree1371
دوشنبه 31 تیر 1392, 22:29 عصر
سلام دوستان من یوزر کنترل هام رو به صورت داینامیک ادد می کنم چگونه می تونم یک متد خاص رو که در همشون مشتر هست رو بخونم؟

amirsajjadi
سه شنبه 01 مرداد 1392, 00:03 صبح
باید توی صفحه ای که میخوای اون کنترل رو فراخوانی کنی (دقیقا توی خط دوم صفحه بعد از <%@ Page ...) بنویسی


<%@ Reference Control="آدرس کنترل" %>

بعد توی برنامه راحت میتونی از پارامترهایی که توی یوزرکنترل نوشتی استفاده کنی

tree1371
سه شنبه 01 مرداد 1392, 00:26 صبح
خوب مشکل دقیقا همینجاست . من به صورت داینامیک یوزر کنترل هام رو ادد می کنم



protected void LinkButton1_Click(object sender, EventArgs e)
{
if (sender is LinkButton)
{
LinkButton ln = (LinkButton) sender;

Control ctrl = (UserControl)Page.LoadControl("~/Admin/Module/" + ln.Text + "/MenuAdd.ascx");
Session["Type"] = null;
Session["Type"] = ln.Text;
txtSelectType.Text = Session["Type"].ToString() ;
PlacHolder.Controls.Add(ctrl);


}
}


واسه داینامیک چه کنم؟

من چه جوری به این خط کد شما

<%@ Reference Control="آدرس کنترل" %>

به صورت داینامیک آدرس بدم؟

چگونه صداشون بزنم ؟

amirsajjadi
سه شنبه 01 مرداد 1392, 02:18 صبح
فرض کنید WebUserControl یک یوزرکنترل هست با یک پروپرتی P1 که توی اون تعریف شده. حالا برای فراخوانی و یا ایجاد یوزرکنترل به صورت داینامیک به این صورت عمل کنید:
1) ابتدا باید یوزرکنترل رو به صورت رفرنس توی صفحه معرفی کنیم تا بتونیم از روی اون شی درست کنیم و توی صفحه اضافه کنیم (بصورت داینامیک)


<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>

<%@ Reference Control="~/WebUserControl.ascx" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<asp:Button ID="btn" runat="server" Text="Button" />
<asp:PlaceHolder ID="plh" runat="server"></asp:PlaceHolder>
</form>
</body>
</html>


2) حالا توی قسمتی که میخواین یوزرکنترل رو ایجاد کنید باید بنویسید:


Protected Sub btn_Click(sender As Object, e As EventArgs) Handles btn.Click

Dim ctrl As New WebUserControl
ctrl.P1 = "Hello"
plh.Controls.Add(ctrl)

End Sub

tree1371
سه شنبه 01 مرداد 1392, 10:15 صبح
این رفرنس رو چه جوری داینامیک اضافه کنم ؟! آیا راهی نداره که که بهصورت داینامیبک اضافه کرد یا آدرس کنترل رو عوض کرد؟!

amirsajjadi
سه شنبه 01 مرداد 1392, 12:04 عصر
منظورتون رو متوجه نشدم. شما وقتی میخواین از کنترل استفاده کنید رفرنس رو اضافه میکنید.

khorsandreza
سه شنبه 01 مرداد 1392, 17:08 عصر
شما یک دایو (div) در صفحه قرار دهید به شکل زیر
<div id ="_Mydiv" runat ="server"></div>
و سپس یک کلیدnدر روی صفحه قرار دهید و در قسمت رویداد کلید دستور زیر را بنویسید

protected void Button1_Click(object sender, EventArgs e)
{
Control xpanel;
string PageNames = "~/UC_PanelBox.ascx";
xpanel = Page.LoadControl(PageNames);
_MyDiv.Controls.Add(xpanel);
_MyDiv.Controls.Add(new LiteralControl("<div style=\"line-height: 15px\">&nbsp;</div>"));
}


سطر اخر اختیاری است که یک فاصله بین Usercontrol و دیگر ایتم ها یفته