PDA

View Full Version : سوال: حفظ وضعيت كنترل اضافه شده بصورت دايناميك



explod_javad
دوشنبه 27 آبان 1387, 09:27 صبح
با سلام
من توي ميخام بصورت دايناميك يك يوزر كنترل به صفحه اضافه كنم.
البته دوست عزيزم asp.net.csharp.ir اين روش رو بطور مختصر توضيح داده
http://barnamenevis.org/forum/showthread.php?t=127392

اما هر بار كه صفحه postback ميشه كنترل اضافه شده ناپديد ميشه.
هر جايي كه فكر مي كردم مهم هست خاصيت enableviewstate="True" رو قرار دادم ولي ...؟
كدشم اينه


Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not IsPostBack Then
tdCtrl.Controls.Clear()
Dim ctrl As UserControl = New UserControl()
Dim pageName As String = Request.QueryString("pageName").ToString()
ctrl = CType(LoadControl(pageName + ".ascx"), UserControl)
tdCtrl.Controls.Add(ctrl)

End If
end sub

Protected Sub btnPg1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnPg1.Click
Response.Redirect("Default.aspx?pageName=~/Wuc/Product")
End Sub
Protected Sub btnPg2_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnPg2.Click
'Response.Redirect("Default.aspx?pageName=~/ProductType")
Response.Redirect("Default.aspx?pageName=~WebUserControl1")
End Sub


و html




<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="WebForm1.aspx.vb" Inherits="Zereh_Wap.WebForm1" %>

<!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:Button ID="btnPg1" runat="server" Text="Page1" onclick="btnPg1_Click" />
<br />
<br />
<asp:Button ID="btnPg2" runat="server" Text="Page2" onclick="btnPg2_Click" />

</div>

<table class="style1" style="background-color: #F0FFF0" >
<tr>
<td runat="server" id="tdCtrl">

&nbsp;</td>
</tr>

</form>
</body>
</html>

kiosksoft
دوشنبه 27 آبان 1387, 09:42 صبح
دست من
منظورت از کنترل چیه ؟ یه کنترل وب مثل یه button یا user control ؟

explod_javad
دوشنبه 27 آبان 1387, 11:44 صبح
من ميخام از يوزر كنترل استفاده كنم
حال فرقي هم ميكنه ؟

kiosksoft
دوشنبه 27 آبان 1387, 12:17 عصر
اطلاعات خودتون +



protectedvoid Page_Load(object sender, EventArgs e)
{
//__________________________________________________ _________
UserControl ctrl = newUserControl();
if (!IsPostBack)
{
try
{
}
catch {
}
}//IsPostBack
//__________________________________________________ _________
string pageName = "";
string pageType = "";
try
{
pageName = Request.QueryString["pageName"].ToString();
pageType = Request.QueryString["pageType"].ToString();
ctrl = (UserControl)LoadControl("~/ClientService/" + pageType + "/" + pageName + ".ascx");
tdMainForUserCtrl.Controls.Add(ctrl);
}
catch
{

if (pageName.Length == 0 && pageType.Length == 0)
{
ctrl = (UserControl)LoadControl("~/ClientService/ConstantCtrl/LoginByCart.ascx");
tdMainForUserCtrl.Controls.Add(ctrl);
}
}
}

explod_javad
چهارشنبه 06 آذر 1387, 02:34 صبح
من برای اضافه کردن کنترل از همین روش که دوست عزیزم asp.net.csharp.ir گفتند استفاده کردم.(داینامیک)
در یک صفحه دو پنل دارم .
یعد از زدن یک کلید(next) پنل اول پنهان و پنل دوم نمایش داده میشود.ولی اگر روی یک کلید که در پنل دوم قرار دارد کلیک کنم ، پنل جاری (دوم) پنهان و مجددا پنل اولی نمایش داده میشود.
از کنترل wizard ستفاده کردم مشکلی نداشت.ولی من میخاهم wizar رو شبیه سازی کنم.
در حقیقت من برای حفظ وضعیت یوزر کنترل بعد از کلیک کردن مشکل داردم.
ممنون.

explod_javad
پنج شنبه 07 آذر 1387, 00:11 صبح
کسی نیست جواب بده ؟

hosseinab
پنج شنبه 07 آذر 1387, 10:12 صبح
من براي كنترل هاي خود asp.net مي زاشتم توي repeater بين براي usercontrol هم ميشه يانه

alishirazi
پنج شنبه 07 آذر 1387, 10:14 صبح
ببین دوست عزیز توضیح مطلب کمی حوصله می خواد:لبخند:
ببین مشخصه که بعد از اولین postback توی wizard دوم همه چیز به حالت اول بر می گرده چرا؟
چونکه با postbkack صفحه Html از اول نوشته می شه و شما که احتمال زیاد توی کد aspx به panel مورد نطرت attribute دادی مثلا یا visible رو ست کردی یا اینکه

style="display:block"

100% یکی از این ها رو توی aspx برای panel هات از ابتدا گزاشتی، حال وقتی postback میشه صفحه html از اول نوشته میشه و دوباره اینها اعمال میشه...
(امیدوارم تونسته باشم منظور رو بفهمونم)
حالا یکی از راه حل ها اینه که visible کنترل ها تو توی aspx ست نکنی و بری توی pageLoad و به اینصورت بنویسی

if (!IsPostBack)
{
pnl1.Visible = false;
pnl2.Visible = true;
}
حالا اگه runtime ، visible اینهارو عوض کنی بعد postback به حالت اول بر نمی گرده.

Behrouz_Rad
پنج شنبه 07 آذر 1387, 11:40 صبح
http://barnamenevis.org/forum/showthread.php?t=91389

explod_javad
جمعه 08 آذر 1387, 09:15 صبح
سلام آقا بهروز و ممنون از شما

http://barnamenevis.org/forum/showthread.php?t=91389
مطالب خوبی در این تاپیک فوق بود.
ولی توی این تاپیک که آدرسشو گذاشتی ، هنوز به مشکلی که من با آن برخورد کردم ، مواجه نشده اند.
هنوز مشکل من پا برجاست !

alishirazi
جمعه 08 آذر 1387, 10:34 صبح
مرسی از اینکه به توضیحات من توجه نکردید:لبخند:
شک ندارم مشکل همونه و با چنین کاری حل میشه...

explod_javad
جمعه 08 آذر 1387, 11:25 صبح
مرسی از اینکه به توضیحات من توجه نکردید:لبخند:
شک ندارم مشکل همونه و با چنین کاری حل میشه...
سلام و شرمنده ، نمی دنم چطور شد که اصلا ندیدمش.
امتحان کردم نشد.