محتویات سایت
        برچسب های محبوب 








 
   تازه سازی صفحه والد ، توسط صفحه فرزند در ASP.NET 2
  در این مقاله قصد دارم به چگونگی تازه سازی ( Refresh ) یک صفحه والد ( Parent ) توسط یک صفحه فرزند ( Child ) بپردازم.
   ASP.NET
   ۲۷۰۷۱
    سورس کد
   مرتضی صحراگرد
   ۱۳۸۵/۱۲/۱۶
نسخه قابل چاپ نسخه قابل چاپ

مقدمه :

در اين مقاله قصد دارم به چگونگي تازه سازي ( Refresh ) يک صفحه والد ( Parent ) توسط يک صفحه فرزند ( Child ) بپردازم.
موضوع اين مقاله در حقيقت يک تکنيک مي باشد که شما بايد با توجه به نيازتان در برنامه هاي کاربردي خود ، آن را سفارشي سازي نماييد.
در ادامه به تشريح چگونگي تازه سازي يک صفحه والد توسط صفحه فرزند ، با استفاده از امکانات  ASP.NET 2  و جاوا اسکريپت مي پردازم.
گاهي پيش مي آيد که شما در برنامه کاربردي تحت وب خود نياز داريد که برخي اطلاعات را در يک صفحه popup نمايش دهيد. فرض کنيد کارت خريدي نوشته ايد که کاربر با کليک کردن روي سبد خريد و يا ليست اقلام خريداري شده توسط خود ، جزئيات محصولات انتخاب شده را در يک صفحه popup مشاهده کند. در صفحه popup جديد کاربر مي تواند محصول انتخابي خود را از سبد خريد حذف نموده و يا تعداد اقلام را تغيير دهد .
در حالت عادي پس از اينکه کاربر تغييرات خود را در صفحات popup اعمال کرد ، صفحه والد تا زماني که تازه سازي نشود ، اطلاعات قبل از تغييرات را نشان مي دهد . در اينجا نياز است که همزمان با اعمال تغييرات در صفحه فرزند ، صفحه والد نيز تازه سازي شود.

معرفي :

در اين مقاله ما دو صفحه ايجاد خواهيم کرد به نام هاي Parent و Child .
صفحه Parent  داراي يک Panel مي باشد که نام رنگ پس زمينه Panel را در رويداد Load خود از  Web.config مي خواند . به طور پيش فرض نام رنگ ، "Red" مي باشد .
در صفحه  Child ، نام اين رنگ را به "Blue" تغيير مي کند و صفحه والد تازه سازي مي شود و در نتيجه رنگ پس زمينه Panel  در صفحه والد به آبي تغيير مي کند.

شروع از ابتدا :

يک پروژه جديد ASP.NET ايجاد کنيد. دوصفحه به نام هاي Panel و Child  ايجاد کنيد.
در رويداد Load صفحه Parent ، کدهاي زير را بنويسيد.


if (!IsPostBack)

{

System.Configuration.ConfigurationManager.AppSettings["PageColor"] = "Red";

}

Style obj_Style = new Style();

obj_Style.BackColor = System.Drawing.Color.FromName(System.Configuration.ConfigurationManager.AppSettings["PageColor"]);

Panel1.ApplyStyle(obj_Style);

همانطور که ملاحظه مي کنيد ابتدا کنترل مي کنيم اگر صفحه براي اولين باز اجرا مي شود ، نام رنگ مربوط به  پس زمينه Panel  را به مقدار "Red" تخصيص مي دهد . سپس نام رنگ را از  Web.config خوانده و به يک شي از نوع  Style تخصيص مي دهد و اين شي را به  Panel  اعمال مي کند. در نتيجه اگر براي اولين بار صفحه را اجرا کنيد ، رنگ پس زمينه  Panel  قرمز مي باشد.
اکنون زمان آن رسيده است که کدهاي جاوا اسکريپت مربوط به باز کردن صفحه Child به صورت  popup ، را بنويسيم . اين کدها را در صفحه Parent بنويسيد.


<script language="javascript" type="text/javascript">

function OpenWindow(strChildPageUrl)

{

window.open (strChildPageUrl, 'NewPage','width=600px,height=600px,scrollbars=1');

}

</script>

اين تابع جاوااسکريپت نام صفحه فرزند را مي گيرد و آن را به صورت  popup ، باز مي کند . در ضمن صفات مربوط به ارتفاع و عرض و اسکرول بار صفحه فرزند نيز مقدار دهي شده اند .اکنون يک هايپر لينک در صفحه  Parent  ايجاد مي کنيم که تابع فوق را فراخواني مي کند و نام صفحه Child.aspx را به آن ارسال مي کند


<a href="javascript:OpenWindow('Child.aspx')">Show Child</a>

با استفاده از دستور زير مي توانيم صفحه  Parent.aspx را از داخل صفحه  Child.aspx تازه سازي کنيم.


window.opener.document.forms(0).submit();

در ASP.NET 2 ما مي توانيم کدهاي سمت مشتري را  به Page.ClientScript  اضافه کنيم .  اکنون يک button به صفحه  Child.aspx اضافه کنيد و کدهاي زير را د ررويداد کليک آن بنويسيد.


System.Configuration.ConfigurationManager.AppSettings["PageColor"] = "Blue";

string cRefreshParent = "<script language='javascript'>" + " window.opener.document.forms(0).submit();" + "</script>";

string cRefreshParentKey = "RefreshParentKey";

if (!this.Page.ClientScript.IsClientScriptBlockRegistered(cRefreshParentKey))

{

this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(),

cRefreshParentKey, cRefreshParent);

}

وظيفه اين دکمه اين است که نام  رنگ موجود در  Web.config را به "Blue" تغيير دهد. سپس کدهاي مربوط به تازه سازي صفحه والد نوشته شده است.
خوب کار تمام شد . اکنون صفحه  Parent.aspx را اجرا کنيد . همانطور که مي بينيد رنگ پس  زمينه Panel از  Web.config خوانده مي شود ، به طور پيش فرض قرمز مي باشد. روي لينک Show Child کليک کنيد تا صفحه فرزند باز شود . روي دکمه Change Color در صفحه فرزند کليک کنيد. اکنون اگر به صفحه Parent دقت کنيد ، مي بينيد که رنگ پس زمينه Panel به آبي تغيير کرده است.
فايل مربوط به اين مقاله از لينک بالاي صفحه قابل دانلود مي باشد.