ادامه Data Binding
خوب اين دو تگ که اصلا شبيه ھم نيستند؟منظور از اينکه گفتيم خيلی ھا اين تگ را با تگ script block اشتباه می گيرند از نظر ظاھری نيست بلکه از نظر طرز کار است.چون تگ script block نيز به ھر نحوی به اجزای دسترسی دارد.ولی تفاوت اين دو تگ در اينجاست که شما در تگ script block می توانيد ھر چند خط و ھر نوع و تعداد دستوری در طراحی سایت بنويسيد ولی در تگ <…#%> شما نمی توانيد ھر گونه کد نويسی کنيد.مثلا کد زير را اگر بنويسيد Error جور واجوری از شما می گيرد :
%#>
If a = 0 Then
(“طراحی سایت اصفهان الو وب“) Response.Write
Else
(“چاپ نکن طراحی سایت اصفهان الو وب “) Response.Write
End If
<%
پس تگ <…#%> تنھا برای DataBinding وبسایت کاربرد دارد و بس.جلوتر با اين تگ بسيار کار خواھيم داشت از جمله کاربردش در کنترل.Repeater تگ ديگری که در زمينه ی DataBinding کاربرد دارد تگ <…$%> است .در زير مثال ھايی از کاربرد اين تگ را می بينيد:
<asp:Literal ID="literal1" runat="server" Text='<%$ AppSettings:SEO site %>'></asp:Literal><br />
در اينجا ما به يک appSetting به نام SEO site (که با علامت :از کلمه ی کليدی appSetting جدا شده) در فايل Web.Config دسترسی داريم.و آن را در يک کنترل Literal قرار می دھيم.بر خلاف تگ <…#%> از تگ <…$%> نمی توان در ھر جا و جای ھر خاصيت کنتر ل ھای وبسایت استفاده کرد.اين تگ تنھا در کنترل Literal کنترلی که برای متونی که نمی خواھند تغيير کنند استفاده می شود که کنترلی مثل Label است کار می کند.شما ھمچنين می توانيد به ConectionString موجود در فايل Web.Config دسترسی داشته باشيد:
<asp:Literal ID="literal1" runat="server" Text='<%$ AppSettings:SEO site %>'></asp:Literal><br />
در اينجا ما به يک appSetting به نام SEO site که با علامت :از کلمه ی کليدی appSetting جدا شده در فايل Web.Config دسترسی داريم.و آن را در يک کنترل قرار می دھيم دھيم.بر خلاف تگ <…#%> از تگ <…$%> نمی توان در ھر جا و جای ھر خاصيت کنتر ل ھای وب استفاده کرد.اين تگ تنھا در کنترل که برای متونی که نمی خواھند تغيير کنند استفاده می شود که کنترلی مثل Label است کار می کند.شما ھمچنين می توانيد به ConectionString موجود در فايل Web.Config دسترسی داشته باشيد:
<asp:literal ID="literal2" runat="server" Text='<%$ ConnectionStrings:SEO site %>'></asp:literal>
برای دسترسی به ConectionString ھا نيز می توان آن ھا را در کنترل SqlDataSource بازيابی کرد که در ادامه در مورد آن صحبت می کنيم. به مواردی که تا به حال به ان اشاره شد data binding expression گفته میشود.يعنی Bind کردن عبارات.شما می توانيد Custom Expression بسازيد.مثلا در زير ما از يک Custom Expression که نامش RandomNumber است استفاده میکنيم و پس از نام ان : و سپس دو عدد در يافت می شود که عدد تصادفی بين ان ھا توليد <asp:Literal Runat=”server” Text=”<%$ RandomNumber:1,6 %>” />
Custom Expression ھا حتما در داخل تگ <…$%> استفاده می شوند و به ھمين دليل يا در کنترل Literal قابل دستيابی ھستند و يا در صفت ھای ساخت آن ھا ساده نيست و بسيار دشوار می باشد و چون در ادامه ی کار نيازی به آنمتناظرشان.از طرفی پيدا نمی کنيم از بيان ان صرف نظر می کنيم.تا اينجا مقدماتی از DataBinding بيان شد.از اينجا به بعد وارد اصل کار میشويم.حتما با کنترل ھای ليستی مثل ListBox-DropDownList-CheckBoxList- آشنا ھستيد.اين کنترل ھا چند خاصيت مشترک در زمينه ی Data Binding Data Binding
يا ھمان منبع داده ای که منبع داده ای برای کنترل ھا است و داده ھا از انجا برای کنترل ھا تامين می شوند.اين منابع داده ای حتما نبايد از پايگاه داده تامين شوند بلکه می توانند از يک کلکسيون HashTable ھم تامين شوند. |
DataSource |
نام ستون منبع داده است.مثلا برای دسترسی به ستونی از پايگاه داده به نام به Emp_name بايد اين مقدار را Emp_name بگذاريد.اين خاصيت باعث می شود ستونی از منبع داده در کنترل ليستی نمايش داده شود. | DataTextField |
ھمانطور که ميدانيد کنترل ھای ليستی تنھا يک ستون بيشتر نداشته و ھر سطر آن يک Text شما می توانيد Value مقاديری را که در کنترل خود قرارمی دھيد نيز تعيين کند مثلا در بالا DataTextField برابر Emp_name است شما می توانيد DataValueField آن را نام خانوادگی بگذاريد که در اينجا ھم بايد نام ستون منبع داده ذکر شود. | DataValueField |
با يک مثال عملی درک بيشتری از اين قضيه پيدا می کنيد. از يک HashTable به عنوان DataSource در طراحی سایت استفاده می کنيم.ومقاديری به آن اضافه می کنيم:
سپس ھمه نوع کنترل ھای ليستی را وارد صفحه کرده و منبع داده ای آن ھا را ھمين HashTable قرارداده و ھمه را DataBind می کنيم:
Dim j As New Hashtable
( “سئو سایت در اصفهان الو وب,0) j.Add
(“j.Add(1, “reza
(“j.Add(2, “jafar
(“j.Add(3, “sadegh
ListBox1.DataSource = j DropDownList1.DataSource = j RadioButtonList1.DataSource = j CheckBoxList1.DataSource = j Me.DataBind()
با اجرای صفحه می بينيد که مقاديربه درستی نمايش داده نشده اند.زيرا جای ھر داده مشخص نيست.اينکار با خصوصيت ھای DataTextField و DataValueField صورت می گيرد.ھمانطور که گفتيم بايد به اين دو مقدار به طور دلخواه نام ستون ھای منبع داه ای را بدھيم.منبع داده ای ما HashTable است که خود يک جدول است و دارای دو ستون Value و Key می باشد.پس مثلا برای کنترل ListBox به صورت زير دو خصوصيت DataTextField و DataValueField را بر اساس منبع داده ای که HashTable است مقدار دھی می کنيم تا تمام مقادير Key که HashTable که در سایت ھستنند در کنترل ListBox نمايش داده شوند:
ListBox1.DataSource = j ListBox1.DataTextField = "key" ListBox1.DataValueField = "value" و برای ساير کنترل ھا: DropDownList1.DataSource = j DropDownList1.DataTextField = "key" DropDownList1.DataValueField = "value" RadioButtonList1.DataSource = j RadioButtonList1.DataTextField = "key" RadioButtonList1.DataValueField = "value" CheckBoxList1.DataSource = j CheckBoxList1.DataTextField = "key" CheckBoxList1.DataValueField = "value"
و در نھايت Bind کردن ھمه به صورت يکجا: دقت کنيد که مقاديری که در تنھا ستون اين کنترل ھا نمايش داده می شوند مقادير ستون Key از HashTable است برای دسترسی به Value آنھا , ھمانطور که در خصوصيت DataValueField مقدار دھی شد می توان يک دکمه نيز به صفحه اضافه کرد و مقادير Select شده از اين کنترل ھا را برگرداند:
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click Label1.Text += "Selected Item in ListBox1 is :" & ListBox1.SelectedItem.Text & " And Value is: " & ListBox1.SelectedValue & "<br>" Label1.Text += "Selected Item in DropDownList1 is :" & DropDownList1.SelectedItem.Text & " And Value is: " & DropDownList1.SelectedValue & "<br>" Label1.Text += "Selected Item in RadioButtonList1 is:" & RadioButtonList1.SelectedItem.Text & " And Value is: " & RadioButtonList1.SelectedValue & "<br>" Label1.Text += "Selceted Items In CheckBoxList1 is: " & "<br>" For Each d As ListItem In CheckBoxList1.Items If d.Selected Then Label1.Text += d.Text & " " & d.Value & "<br>" End If Next End Sub
دیدگاهتان را بنویسید