چايگاه اسكريپت های سمت سرويس گيرنده در صفحات ASP.NET New Page 1



ساير




 

 

 

SAKHA RAVESH CO.

 ا مروز

 جمعه  4  فروردين  1396  2017  Mar.  24   Friday ToDay
صفحه اصلی  مقالات نکته هادايره المعارف خودآموزها | تازه ها خود آزمون ها    
  نسخه قابل چاپ  

    5 4 3 2 1 

 عنوان

 نويسنده

  مشاهده

 تعداد آراء

 امتياز

 اسكريپت های سمت سرويس گيرنده در صفحات ASP.NET ( بخش دوم )

 مديريت وب

9545

45

3.1

با توجه به جایگاه داده در عصر حاضر و  لزوم نگاه جامع به این مقوله مهم ، بر آن شدیم تا محوریت فعالیت های خود را بر  روی این موضوع متمرکز نمائیم . از این رو گروه فابک با شعار فناوری اطلاعات برای کسب وکار شکل گرفت و  خدمات خود  را از طریق  سایت www.fabak.ir  به مخاطبان محترم عرضه می نماید

 

اسكريپت های سمت سرويس گيرنده در صفحات ASP.NET

اسكريپت های سمت سرويس گيرنده در صفحات ASP.NET ( بخش دوم )
در بخش اول به ضرورت استفاده از اسكريپت های سمت سرويس گيرنده در برنامه های وب اشاره و با نحوه استفاده از اسكريپت های سمت سرويس گيرنده توسط برخی از كنترل های سرويس دهنده ASP.NET به منظور انجام وظايف از قبل تعريف شده ، آشنا شديم . همچنين ، به اين موضوع اشاره گرديد كه رفتار اسكريپت های سمت سرويس گيرنده در صفحات ASP.NET در برخی موارد با صفحات HTML متفاوت است :

  • اضافه كردن event handler سمت سرويس گيرنده  به كنترل های سرويس دهنده ASP.NET 

  • شناسائی و مراجعه به كنترل های سرويس دهنده از طريق اسكريپت های سمت سرويس گيرنده  

  • افزودن اسكريپت های سمت سرويس گيرنده به صفحه به صورت پويا 

  • ايجاد رويداد كليك سمت سرويس گيرنده برای كنترل های سرويس دهنده 

  • اشتراك اطلاعات بين اسكريپت های سمت سرويس گيرنده و كدهای سمت سرويس دهنده

  • فراخوانی كدهای سمت سرويس دهنده از طريق اسكريپت های سمت سرويس گيرنده بدون نياز به postback

 در اين بخش به بررسی موارد اول و دوم مورد خواهيم پرداخت .

اضافه كردن event handler سمت سرويس گيرنده به كنترل های سرويس دهنده ASP.NET 
با توجه به اين كه با كنترل های سرويس دهنده ASP.NET در يك صفحه به عنوان element  برخورد می شود (نوع عنصر تفسير شده توسط يك كنترل به زبان نشانه گذاری استفاده شده در يك صفحه بستگی دارد : HTML ، XHTML و يا ... ) ، می توان اسكريپت های سمت سرويس گيرنده event handler را به كنترل ها همانند ساير عناصر موجود در صفحه اضافه نمود . توجه به اين موضوع كه كنترل چگونه خروجی خود را تفسير می نمايد و كدام خصلت را برای خود رزو نموده است ، حائز اهميت است .

افزودن event handler سمت سرويس گيرنده به صورت تعريفی
از طريق تگ های كنترل های سرويس دهنده ASP.NET ، می توان با استفاده از Attributes مقادير مورد نظر خصلت ها را مشخص نمود . مثلا"  برای مقداردهی خصلت Text كنترل TextBox ، می توان از تگ زير استفاده نمود :

<asp:textbox id="TextBox1" runat="server" text="Sample Text" />

در صورتی كه از يك attribute استفاده گردد  كه نتوان آن را به يك خصلت خاص map نمود ، ASP.NET  در زمان پردازش سمت سرويس دهنده از آن صرفنظر نموده و آن را  به عنوان as-is به همراه ساير تگ های HTML توليد شده برای كنترل سرويس دهنده به مقصد مرورگر ارسال می نمايد . مثلا" كنترل TextBox دارای خصلتی با نام onKeyup  نمی باشد . بنابراين در صورتی كه به همراه كنترل TextBox از خصلت فوق استفاده گردد ، ASP.NET بدون انجام هيچگونه واكنشی آن را برای مرورگر سرويس گيرنده ارسال می نمايد . با توجه به نحوه برخورد ASP.NET با اينچنين خصلت  هائی ، می توان رويدادهآی مورد نظر را به كنترل های سرويس دهنده و از طريق تعريف تگ های مربوطه نسبت داد .
كد زير نحوه استفاده از يك event handler سمت سرويس گيرنده به همراه كنترل سرويس دهنده  TextBox را نشان می دهد . پس از درج هر حرف در TextBox ( بروز رويداد )  ، طول آن در يك عنصر span با نام spanCounter نمايش داده می شود ( event handler  ) .

<%@ Page Language="VB"%>
<html>
<head >
<title>تست يك </title>
</head>
<body>
<form id="form1" runat="server">
    <asp:textbox id="TextBox1" runat="server" text="Sample Text"
     onkeyup="spanCounter.innerText=this.value.length;" />
   <Span id="spanCounter" />
</form>
</body>
</html>

در صورت ضرورت می توان event handler سمت سرويس گيرنده را در قالب يك تابع سازماندهی تا پس از بروز رويداد ( فشردن يك كليد ) مرتبط با يك كنترل سرويس دهنده ، فعال و وظايف خود را انجام دهد . 

<%@ Page Language="VB"%>
<html>
<head  >
<title>تست دو </title>
<script type="text/javascript">
  function DisplayCount(a)
    {
       spanCounter.innerText=a.value.length;
    }
</script>
</head>
<body>
<form id="form1" runat="server">
<asp:textbox id="TextBox1" runat="server" text="Sample Text"
         onkeyup="DisplayCount(this);" />
<Span id="spanCounter" />
</form></body></html>

افزودن يك event handler  سمت سرويس گيرنده از طريق برنامه و در زمان اجراء
در صورت ضرورت می توان event handler  سمت سرويس گيرنده را از طريق برنامه و در زمان اجراء به يك كنترل سرويس دهنده ASP.NET اضافه نمود . استفاده از ويژگی فوق در مواردی مفيد است كه رويداد و يا كد مرتبط با آن به اطلاعاتی نياز دارند كه صرفا" در زمان اجراء قابل دسترسی است . در چنين مواردی می توان از رويداده Load و يا Init صفحه به منظور اضافه كردن خصلت مورد نظر به يك كنترل استفاده نمود (استفاده از متد Add ) .
كد زير نحوه اضافه كردن يك خصلت به يك كنترل سرويس دهنده در زمان اجراء و به منظور اجرای‌ يك event handler را نشان می دهد .  اسكريپت سمت سرويس گيرنده طول متن تايپ شده در كنترل TextBox را در هر لحظه نمايش می دهد . در اسكريپت فوق ،فرض شده است كه صفحه دارای يك عنصر span با نام spanCounter  است .

<%@ Page Language="VB"%>
<html>
<head >
<title>تست سه </title>
<Script RunAt="Server">
 
  Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
      Dim displayControlName As String = "spanCounter"
      TextBox1.Attributes.Add("onkeyup", _
       displayControlName & ".innerText=this.value.length;")
End Sub
</Script>

</head>
<body>
<form id="form1" runat="server">
<asp:textbox id="TextBox1" runat="server" text="Sample Text" />
<Span id="spanCounter" />
</form></body></html>

 

افزودن يك رويداد onClick سمت سرويس گيرنده به كنترل سرويس دهنده Button
با كليك بر روی كنترل سرويس دهنده button  بلافاصله و به صورت پيش فرض  يك postback اتفاق می افتد تا event handler مرتبط با آن در سمت سرويس دهنده اجراء گردد . در صورت ضرورت می توان از خصلت OnClientClick  كنترل Button ( كنترل هائی نظير Button , LinkButton  و ImageButton ) ، به منظور معرفی يك event handler استفاده نمود تا پس از كليك بر روی button ، درابتدا event handler سمت سرويس گيرنده اجراء گردد و در ادامه عمليات postback انجام شود .
كد زير نحوه اضافه كردن يك رويداد كليك سمت سرويس گيرنده به  كنترل Button  را نشان می دهد . پس از كليك بر روی Button يك پيام ارائه و در صورت تائيد ، اطلاعات برای سرويس دهنده ارسال می گردد . ( با كليك اول ، از يك روتين سمت سرويس گيرنده پرای پاسخگوئی به آْن استفاده می شود و پس از كليك مجدد بر روی Button نمايش داده شده در جعبه محاوره ای ، اطلاعات برای سرويس دهنده ارسال تا متناسب با شرايط برنامه با آنان برخورد شود) .

<%@ Page Language="VB" %>
<script runat="server">
   Sub Button1_Click(ByVal sender As Object,ByVal e As System.EventArgs)
    Label1.Text = "Server click handler called."
   End Sub
</script>

<body>
<form id="form1" runat="server">
    <asp:Button ID="Button1" Runat="server"
         OnClick="Button1_Click"
         OnClientClick="return confirm('Ready to submit.')"
         Text="Test Client Click" />
       <br />
      <asp:Label ID="Label1" Runat="server" text="" />
</form>
</body>
</html>

شناسائی و مراجعه به كنترل های سرويس دهنده از طريق اسكريپت های سمت سرويس گيرنده
زمانی كه يك كنترل سرويس دهنده ASP.NET تفسير می گردد ، خصلت ClientID آن در بردارنده خصلت های Id و name عنصر توليد شده است . ( خصلت ClientID به صورت اتوماتيك و همزمان با مقداردهی به خصلت ID مقدار لازم را خواهد گرفت ) . فرض كنيد با استفاده از نمونه كد زير ، يك كنترل سرويس دهنده ASP.NET را ايجاد كرده باشيم :

 <asp:textbox id="TextBox1" runat="server" text="Sample Text" />

خصلت ClientID ، مقدار TextBox1 را خواهد گرفت و در نهايت نتايج توليد شده زير برای يك مرورگر مبتنی بر HTML  ارسال می گردد :

<input name="TextBox1" type="text" value="Sample Text" id="TextBox1" />

بنابراين ، به منظور دستيابی به يك كنترل سرويس دهنده ASP.NET از طريق اسكريپت های سمت سرويس گيرنده ، می توان از خصلت های Id و name استفاده نمود . برای آدرس دهی يك كنترل سرويس دهنده ASP.NET توسط اسكريپت های سمت سرويس گيرنده ، می توان از نام كامل  آن نيز استفاده نمود  ( fully qualified reference  ). در صورتی كه كنترل سرويس دهنده فرزند عنصر form در صفحه باشد ، می توان از گرامر زير به منظور مراجعه به كنترل در اسكريپت های سمت سرويس گيرنده استفاده نمود .

<document.forms[0].TextBox1.value = "New value";

گرامر واقعی مورد نياز برای مراجعه به يك كنترل سرويس دهنده به نوع كنترل و اين كه آيا كنترل فرزند كنترل ديگری است ، بستگی خواهد داشت . 

مراجعه به كنترل ها ئی كه درون ساير كنترل ها قرار دارند
برخی كنترل ها ، كنترل های فرزند را درون صفحه تفسير می نمايند . كنترل های GridView, DetailsView, FormView, DataList , Repeater , user controls و Web Parts نمونه هائی در اين زمينه می باشند . در چنين مواردی ، كنترل فرزند ممكن است دارای يك ID منحصربفرد نباشد چراكه كنترل های فرزند در تمپليتی تعريف شده اند كه برای‌ هر سطر نمونه ، كنترل های جديدی توليد  و يا ممكن است كنترل parent از طريق يك منبع خارجی به صفحه اضافه شده باشد ( نظير كنترل های Web part و user ) .  كنترل های parent به منزله naming containers می‌باشند (توسط INamingContainer پياده سازی شده اند ). يك naming containers  منحصربفرد بودن IDs كنترل های فرزند را تضمين می نمايد .
مثلا" می توان يك خصلت ItemTemplate را در كنترل DataList ايجاد و يك كنترل Checkbox را به آن اضافه نمود كه مقدار ID آن CheckEnabled در نظر گرفته شده باشد . در زمان تفسير كنترل DataList ، يك كنترل جديد CheckEnabled برای هر آيتم داده در نظر گرفته می شود . صفحه تفسير شده نمی بايست شامل چندين نمونه از يك عنصر با نام CheckEnabled باشد ، بنابراين كنترل DataList يك شناسه منحصربفرد برای‌هر يك از كنترل های فرزند خود ايجاد  می نمايد .
شناسه های منحصربفرد برای كنترل های فرزند يك naming container با بررسی دو خصلت توليد می گردند . برای هر كنترل فرزند :

  • خصلت UniqueID كنترل به عنوان خصلت name در نظر گرفته می شود .

  • خصلت ClientID كنترل به عنوان خصلت Id  در نظر گرفته می شود .

هم ClientID و هم UniqueID بر اساس خصلت ID  اوليه توليد می گردند تا  اطلاعات لازم به منظور تضمين منحصربفرد بودن نتايج در يك صفحه تامين گردد .از مقدار ClientID كه در واقع ID عنصر تفسير شده است ، می توان  در اسكريپت های سمت سرويس گيرنده استفاده نمود . پس از اجرای يك صفحه حاوی يك  naming container  و مشاهده Source آن ، می توان ID توليد شده برای هر يك از كنترل های فرزند را مشاهده نمود .
در بخش سوم به بررسی ساير موارد خواهيم پرداخت .



جستجو

مقالات                 
دايره المعارف       
دوره های آموزشی


 

 

مشاهده گروه ها



              

 

 تهيه شده در شرکت سخا روش -  1382