Data Binding
پيوند دادن منبع داده ای به کنترل ھای وبسایت و نمايش آن ھا را DataBinding می نامند مثلا اگر از يک منبع داده مقداری را در يک کنترل در هنگام طراحی سایت جای داده شود مثل يک TextBox قرار دھيد در حقيقت داده ھا را Bind کرديد.اين عمل در ابتدا به اين صورت قابل اجرا است که شما متغيری عمومی يا محافظت شده در Code-Behind تعريف کنيد و سپس به آن در داخل صفحه ی Aspx دسترسی داشته باشيد.برای مثال يک متغير به صورت زير تعريف کنيد:
“!Public db As String = “Hello Word
يک جز از DataBinding دسترسی به اجزای Asp.NET از داخل صفحه است.برای اينکه در بين تگ ھای صفحه بتوانيد اين متغير را صدا زده و از آن استفاده کنيد بايد از تگ <…#%> استفاده کنيد و در داخل آن به متغيری که در Code-Behind تعريف کرده بوديد دسترسی داشته باشيد.در کد زير ما به متغير عمومی که در بالا تعريف کرديم دسترسی داريم:
<"html xmlns="http://www.w3.org/1999/xhtml> <"head runat="server> <title>---Data Binding Page---</title> <head/> <body> <"form id="form1" runat="server> <div> <%#db%> <div/> <form/> <body/> <html/>
ولی اگر اين صفحه را اجرا کنيد چيزی در صفحه مشاھده نمی کنيد.تا بحال ما برای کنترل ھای مختلف DataSource ھای مختلفی ايجاد کرديم .ولی ھيچ کدام برای نمايش آنھا کافی نبود تا اينکه آن ھا را DataBind می کرديم مثل کنترل GridView در اينجا ھم تا حالا DataSource را مشخص کرديم و حالا بايد صفحه را DataBind کنيم تا مقدار اين متغير که Hellow Word است به خروجی منتقل شود .اين کار را در رويداد Page_Load انجام می دھيم:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load ()Me.DataBind End Sub
به اين عمل که ما انجام داديم و مقدار يک متغير رادر صفحه ی Aspx به کار برديم DataBinding به روش Single-Value می گويند.برای آشنايی ھر چه بيشتر با اين روش در زير مثال ھای ديگری در اين زمينه این گونه طراحی وب را می بينيم.می خواھيم از مقدار برگشتی يک تابع در يک Label استفاده کنيم.ابتدا تابع را به صورت زير می نويسيم:
Public Function return_title() As String
Return Me.Title.ToString
End Function
اين تابع عنوان يا Title يک صفحه را از نوع رشته ای بر می گرداند.حال يک کنترل Label به صفحه اضافه کرده و می خواھيم خاصيت Text آن را برابر مقدار برگشتی اين تابع قرار دھيم.ھمانطور که گفتيم برای دسترسی به اجزای اجزای Asp.NET از داخل صفحه , از تگ <…#%> استفاده می کنيم.در اينجا ھم جلوی خاصيت Text اين Label از اين تگ استفاده کرده و در داخلش تابع را صدا می زنيم:
<'<%()asp:Label ID="label1" runat="server" Text='<%# return_title>
نکته ی قابل توجه اين است که اين تگ وقتی در جلوی خاصيتی از يک کنترل به کار برده می شود حتما بايد داخل “” و يا ’‘ قرار گيرد به کد زير دقت کنيد.خروجی آن parham است.علامت + دو رشته ی طرفينش را به ھم اتصال می دھد مثل کدھايی که در Code-Behind می نوشتيد: <%#”ali” + “parham”%>
کد زير يک خاصيت فقط خواندنی ايجاد کرده و نام يک تصوير را از نوع String برمی گرداند:
Public ReadOnly Property FilePath() As String Get "Return "apress.jpg End Get End Property
و ما ان را در خاصيت ImageUrl از کنترل image استفاده کرديم تا خروجی از نوع تصوير باشد: بهتر ان است در ادرس عکس اسم مرتبط با عکس ومرتبط به کلمه کلیدی باشد برای بهبود سئو سایت برای موتورهای جستجو باشد
</'<%asp:Image ID="image1" runat="server" ImageUrl='<%# FilePath>
و يا کد زير متغيری عددی به نام a تعريف کرده و مقدار اوليه اش را ٤ قرار می دھد: Public a As Integer = 4
و ما از آن به شکل زير استفاده کرديم:
<asp:label ID="label2" runat="server" Text='<%# (a*2)+15 %>'></asp:label>
چون در آن از تگ <…#%> استفاده شده مقدار a را از Code-Behind بازيابی کرده و سپس آن رادر 2 ٢ ضرب می کند و حاصل را +15 می کند و جواب نھايی را در خاصيت Text کنترل label قرار می دھد.ھمچنين شما می توانيد توابعی با آرگومان ورودی را صدا بزنيد. در زير تابعی ساده داريم که يک ورودی عددی دارد که آن را با 6 جمع کرده و حاصل را برمی گرداند:
Public Function return_sum(ByVal i As Integer) As Integer Return i + 6 End Function
و ما آن تابع را با ورودی متغير a که بالاتر تعريف کرديم صدا زديم و خروجيش 10 شد <%# return_sum(a) %>
حتما تا به حال دستور Request.Browser.Browsers را ديده ايد.اين يک دستور ساده مثل Page.Title است. این دستور کمک شایانی به بهینه سازی سایت میکند. Page.Title را در يک تابع به کار برديم و خروجيش را بر گردانديم.ولی می توان بدون استفاده از تابع نيز اين کار را انجام داد يعنی خود دستور را در داخل تگ به کار بريد.
<%# Request.Browser.Browser %>
<%#Page.Title%>
نکته ی قابل توجه اين است که خيلی ھا اين تگ را با تگ script block اشتباه میگيرند.تگ script block تگی است که در آن می توان کد ھای VB.Net را در آن و در داخل صفحه ی ASPx نوشت.نمونه ای از آن به صورت زير است:
<%@ Page Language="vb" %> <script runat="server"> Sub Page_Load() time.text=Hour(Now) & ":" & Minute(Now) & ":" & Second(Now) End Sub </script> <html> <head> <title>The Punctual Web Server</title> </head> <body> In WebServerLand the time is currently: <asp:Label id="time" runat="server"></asp:Label> </body> </html>
دیدگاهتان را بنویسید