PDA

View Full Version : مشکل با فراخانی UserControl با PlaceHolder



merlin_vista
یک شنبه 16 دی 1386, 21:17 عصر
آقا من میخواهم با زدن یک باتن در PlaceHolder یک یوزرکنترل فراخانی بشه این هم کد های من هست !
Login.ascx :

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="Login.ascx.cs" Inherits="Login" %>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><br />
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox><br />
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="login"/>
<br />
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>


کد صفحه ASPX :

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Ajax.aspx.cs" Inherits="Ajax" %>

<!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>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" /></div>
</form>
</body>
</html>

;کد aspx.cs :

protected void Button1_Click(object sender, EventArgs e)
{
PlaceHolder1.Controls.Add(Page.LoadControl("Login.ascx"));
}

و به درستی کار میکنه !!
ولی مشکلی که دارم اینه که وقتی WebUserControl به طور کامل لود میشه وقتی روی دکمه ای که توش هست کلیک میکنی بدون هیچ اتفاقی WebUserControl میره !!! :گریه:

miladr
دوشنبه 17 دی 1386, 01:38 صبح
این که میره واسه اینکه صفحه جاری با زدن کلیلک رفرش میشه و شما هم این رو با کد اضافه کردی پس دوباره وضعیت به حالت اول بر میگرده.اما چرا کاری نمی کنه شما برنامت رو trace کن ببین چه مراحلی انجام میشه بعد کلیک

merlin_vista
دوشنبه 17 دی 1386, 08:06 صبح
حالا راح حل چیه که وقتی صفحه ریفرش میشه نره !؟

rezamizbani
دوشنبه 17 دی 1386, 09:22 صبح
ازجاوا اسکریپت استفاده کن !!!

یکی Palaceholder رو بزار توی یک div و با style محوش کن یا visible رو بردار و با یک کلید جاوا اسکریپتی پنل رو باز کن اینجوری هم سریع تر میاد هم در ابتدای صفحه لود میشه هم افکت داره !!! :لبخند:

اکه خواستی بگو تا کدشا برات بنویسم ! :چشمک:

merlin_vista
دوشنبه 17 دی 1386, 09:57 صبح
ببین من ممکنه 10 تا UserControl داشته باشم ! و می 10 تا دکمه که میخواهم رو هر کدام از دکمه ها که کلیک کردم ا UserControl مخصوص آن در Palaceholder بیاد بالا و تا وقتی که من روی دکمه دیگری کلیک نکردم آن قبلیه نره و عملیاتب که توش نوشتم اجرا بشه !! (مثلاً ثبت اطلاعات در بانک !‌ )

abadanboy
دوشنبه 17 دی 1386, 10:29 صبح
نمی دونم این کار درسته یا نه ولی بنظرم انجام بدی کارت حله وقتی دکمه user control کلیک میشه یه querystring به صفحه بده و برای خاموش یا روشن بودن usercontrol از اون در مر حله دوم کمک بگیر
مثلاً


public Void Page_Load(object s,eve....)
{
try
{
if(Request.QueryString["ID"].ToSring()=="1")
PlaceHolder1.Controls.Add(Page.LoadControl("Login.ascx"));
}
catch{}
}
protected void Button1_Click(object sender, EventArgs e)
{
PlaceHolder1.Controls.Add(Page.LoadControl("Login.ascx"));
}


حالا تو روال دکمه user control بعد انجام دستوراتت که redirect می کنی id رو هم بش بده

merlin_vista
دوشنبه 17 دی 1386, 10:56 صبح
حالا تو روال دکمه user control بعد انجام دستوراتت که redirect می کنی id رو هم بش بده
خوب من نیمخواهم که redirect شود !!
میخواهم اصلاً صفحه ریفرش نشه ! مثل AJAX

abadanboy
دوشنبه 17 دی 1386, 11:01 صبح
بعد از روال دکمه redirect کنی بهتره وگرنه راه حل Ajax و UpdatePanel هست