آموزش ASP.NET
آموزش WebForm-کنترل Button
کنترل دکمه برای نمایش یک push button استفاده می شود.
کنترل دکمه
کنترل دکمه برای نمایش یک push button استفاده می شود. push button ممکن است یک دکمه ارسال باشد یا یک دکمه command. به طور پیش فرض، این کنترل یک دکمه ارسال است.
دکمه ارسال، نام command ندارد و هنگامی که روی آن کلیک شد صفحه را به سمت سرور برمی گرداند. نوشتن روال مدیریت رویداد برای کنترل عملیاتی که هنگام کلیک روی دکمه ارسال اجرا شود، امکان پذیر است.
دکمه command، نام command دارد و به شما اجازه می دهد که چندین کنترل دکمه روی یک صفحه ایجاد کنید.
نوشتن روال مدیریت رویداد برای کنترل کردن عملیاتی که هنگام کلیک روی دکمه command اجرا گردد، امکان پذیر است.
مثال زیر یک کنترل دکمه ساده را نشان می دهد:
<body>
<form runat="server">
<asp:Button id="b1" Text="Submit" runat="server" />
</form>
</body>
</html>
افزودن اسکریپت
هنگامی که روی یک دکمه ذاخل فرم کلیک می شود، اغلب آن فرم سمت سرور ارسال می شود.
در مثال زیر ما یک کنترل TextBox، یک کنترل دکمه و یک کنترل Label را در فایل aspx. تعریف کرده ایم. هنگامی که دکمه کلیک می شود، زیرروال submit اجرا می شود. زیرروال submit متن را در کنترل Label می گذارد.
مثال
Sub submit(sender As Object, e As EventArgs)
lbl1.Text="Your name is " & txt1.Text
End Sub
</script>
<html>
<body>
<form runat="server">
Enter your name:
<asp:TextBox id="txt1" runat="server" />
<asp:Button OnClick="submit" Text="Submit" runat="server" />
<p><asp:Label id="lbl1" runat="server" /></p>
</form>
</body>
</html>
خروجي کد بالا:
آموزش WebForm-اتصال داده
ممکن است از data binding برای پر کردن لیستی از آیتم های قابل انتخاب از یک data source مانند پایگاه داده، فایل XML یا یک اسکریپت، استفاده کنیم.
Data Binding
کنترل های زیر کنترل های لیستی هستند که data binding را پشتیبانی می کنند:
- asp:RadioButtonList
- asp:CheckBoxList
- asp:DropDownList
- asp:Listbox
عناصر قابل انتخاب در هر یک از کنترل های بالا معمولا توسط یک یا چند کنترل asp:ListItem تعریف می شوند، مانند آنچه در زیر آمده است:
<body>
<form runat="server">
<asp:RadioButtonList id="countrylist" runat="server">
<asp:ListItem value="N" text="Norway" />
<asp:ListItem value="S" text="Sweden" />
<asp:ListItem value="F" text="France" />
<asp:ListItem value="I" text="Italy" />
</asp:RadioButtonList>
</form>
</body>
</html>
با این وجود، با استفاده از data binding ممکن است از یک منبع مجزا، مانند پایگاه داده، یک فایل XML یا یک اسکریپت برای پر کردن عناصر انتخابی استفاده کنیم.
با استفاده از یک source، داده از HTML مجزا می گردد، و هر تغییر در آیتم ها در منبع جداگانه صورت می پذیرد. در سه آموزش آتی، در مورد نحوه اتصال داده از یک منبع داده اسکریپت شده توضیح خواهیم داد.
آموزش WebForm-شیء ArrayList
شیء ArrayList، مجموعه ای از آیتم هاست که هر کدام از این آیتم ها دارای داده هستند.
ایجاد یک ArrayList
شیء ArrayList، مجموعه ای از آیتم هاست که هر کدام از این آیتم ها دارای داده هستند.
آیتم ها با استفاده از متد ()Add به ArrayList اضافه می شوند.
کد زیر یک شیء جدید ArrayList با عنوان mycountries ایجاد می کند و چهار آیتم به آن اضافه می کند:
Sub Page_Load
if Not Page.IsPostBack then
dim mycountries=New ArrayList
mycountries.Add("Norway")
mycountries.Add("Sweden")
mycountries.Add("France")
mycountries.Add("Italy")
end if
end sub
</script>
به طور پیش فرض، هر شیء حاوی 16 ورودی است. شیء ArrayList می تواند تا آخرین اندازه خود، با استفاده از متد ()TrimToSize سایز دهی شود:
Sub Page_Load
if Not Page.IsPostBack then
dim mycountries=New ArrayList
mycountries.Add("Norway")
mycountries.Add("Sweden")
mycountries.Add("France")
mycountries.Add("Italy")
mycountries.TrimToSize()
end if
end sub
</script>
ArrayList همچنین می تواند از روی حروف الفبا یا بر اساس عدد با استفاده از متد ()Sort مرتب شود:
Sub Page_Load
if Not Page.IsPostBack then
dim mycountries=New ArrayList
mycountries.Add("Norway")
mycountries.Add("Sweden")
mycountries.Add("France")
mycountries.Add("Italy")
mycountries.TrimToSize()
mycountries.Sort()
end if
end sub
</script>
برای مرتب سازی در جهت عکس، می توان از متد ()Reverse بعد از متد ()Sort استفاده کرد:
Sub Page_Load
if Not Page.IsPostBack then
dim mycountries=New ArrayList
mycountries.Add("Norway")
mycountries.Add("Sweden")
mycountries.Add("France")
mycountries.Add("Italy")
mycountries.TrimToSize()
mycountries.Sort()
mycountries.Reverse()
end if
end sub
</script>
اتصال داده ها به یک ArrayList
شیء ArrayList ممکن است به صورت اتوماتیک، متن و مقادیر را برای کنترل های زیر تولید کند:
- asp:RadioButtonList
- asp:CheckBoxList
- asp:DropDownList
- asp:Listbox
برای اتصال کنترل RadioButtonList، ابتدا یک کنترل RadioButtonList (بدون استفاده از عنصر asp:ListItem) در یک صفحه aspx. ایجاد فرمایید:
<body>
<form runat="server">
<asp:RadioButtonList id="rb" runat="server" />
</form>
</body>
</html>
سپس اسکریپتی برای ایجاد لیست و اتصال مقادیر لیست به کنترل RadioButtonList ایجاد نمایید:
مثال
Sub Page_Load
if Not Page.IsPostBack then
dim mycountries=New ArrayList
mycountries.Add("Norway")
mycountries.Add("Sweden")
mycountries.Add("France")
mycountries.Add("Italy")
mycountries.TrimToSize()
mycountries.Sort()
rb.DataSource=mycountries
rb.DataBind()
end if
end sub
</script>
<html>
<body>
<form runat="server">
<asp:RadioButtonList id="rb" runat="server" />
</form>
</body>
</html>
خروجي کد بالا:
ویژگی DataSource کنترل RaioButtonList، معادل ArrayList تنظیم شد و به عنوان منبع داده (data source) کنترل RadioButtonList تعریف شد.
متد ()DataBind کنترل RadioButtonList منبع داده (data source) را به کنترل RadioButtonList متصل می کند.
نکته: مقادیر استفاده شده هم به عنوان متن و هم به عنوان مقدار کنترل استفاده شده است. برای افزودن مقادیری که از متن مجزا هستند، هم می توان از HashTable استفاده کرد و هم از شیء SortedList.
آموزش WebForm-شیء Hashtable
شیء HashTable حاوی آیتم هایی به صورت Key/Value می باشد.
ایجاد یک Hashtable
شیء HashTable حاوی آیتم هایی به صورت Key/Value می باشد.
کلیدها به عنوان اندیس استفاده می شوند، و جستجوی خیلی سریعی روی مقادیر می تواند از طریق جستجوی کلیدها انجام شود.
آیتم ها با استفاده از متد ()ADD به Hashtable اضافه می گردند.
کد زیر یک HashTable با نام mycountries ایجاد می کند و چهار عنصر به آن اضافه می کند:
Sub Page_Load
if Not Page.IsPostBack then
dim mycountries=New Hashtable
mycountries.Add("N","Norway")
mycountries.Add("S","Sweden")
mycountries.Add("F","France")
mycountries.Add("I","Italy")
end if
end sub
</script>
Data Binding
شیء Hashtable ممکن است به صورت اتوماتیک، متن و مقادیر را برای کنترل های زیر ایجاد کند:
- asp:RadioButtonList
- asp:CheckBoxList
- asp:DropDownList
- asp:Listbox
برای اتصال یک کنترل RadioButtonList، ابتدا یک کنترل RadioButtonList (بدون استفاده از عنصر asp:ListItem) در یک صفحه aspx. ایجاد فرمایید:
<body>
<form runat="server">
<asp:RadioButtonList id="rb" runat="server" AutoPostBack="True" />
</form>
</body>
</html>
سپس اسکریپتی ایجاد نمایید که لیست را ایجاد می نماید:
sub Page_Load
if Not Page.IsPostBack then
dim mycountries=New Hashtable
mycountries.Add("N","Norway")
mycountries.Add("S","Sweden")
mycountries.Add("F","France")
mycountries.Add("I","Italy")
rb.DataSource=mycountries
rb.DataValueField="Key"
rb.DataTextField="Value"
rb.DataBind()
end if
end sub
</script>
<html>
<body>
<form runat="server">
<asp:RadioButtonList id="rb" runat="server" AutoPostBack="True" />
</form>
</body>
</html>
سپس زیرروالی را به کد اضافه می کنیم تا هنگامی که کاربر روی یک عنصر در کنترل RadioButtonList کلیک می کند، اجرا شود. هنگامی که دکمه رادیویی کلیک شد، متنی در label ظاهر می شود:
مثال
sub Page_Load
if Not Page.IsPostBack then
dim mycountries=New Hashtable
mycountries.Add("N","Norway")
mycountries.Add("S","Sweden")
mycountries.Add("F","France")
mycountries.Add("I","Italy")
rb.DataSource=mycountries
rb.DataValueField="Key"
rb.DataTextField="Value"
rb.DataBind()
end if
end sub
sub displayMessage(s as Object,e As EventArgs)
lbl1.text="Your favorite country is: " & rb.SelectedItem.Text
end sub
</script>
<html>
<body>
<form runat="server">
<asp:RadioButtonList id="rb" runat="server"
AutoPostBack="True" onSelectedIndexChanged="displayMessage" />
<p><asp:label id="lbl1" runat="server" /></p>
</form>
</body>
</html>
خروجي کد بالا:
نکته: شما نمی توانید عناصری که به یک Hashtable اضافه شده است را مرتب کنید. برای مرتب سازی عناصر از روی حروف الفبا یا بر اساس عدد، از SortedList استفاده نمایید.
آموزش WebForm-شیء SortedLit
شیء SortedList ویژگی های شیء ArrayList و شیء Hashtable را ترکیب می کند.
شیء SortedList
شیء SortedList حاوی عناصری به صورت زوج Key/Value می باشد. شیء SortedList عناصر را از روی الفبا یا به صورت عددی به صورت اتوماتیک، مرتب می کند.
عناصر با استفاده از متد ()Add به SortedList اضافه می شوند. یک SortedList می تواند تا آخرین اندازه خود، با استفاده از متد ()TrimToSize سایز دهی شود.
کد زیر شیء SortedList ی با نام mycountries ایجاد می کند و چهار عنصر به آن اضافه می کند.
sub Page_Load
if Not Page.IsPostBack then
dim mycountries=New SortedList
mycountries.Add("N","Norway")
mycountries.Add("S","Sweden")
mycountries.Add("F","France")
mycountries.Add("I","Italy")
end if
end sub
</script>
Data Binding
شیء SortedList ممکن است به صورت اتوماتیک، متن و مقادیر را برای کنترل های زیر تولید کند:
- asp:RadioButtonList
- asp:CheckBoxList
- asp:DropDownList
- asp:Listbox
برای اتصال کنترل RadioButtonList، ابتدا یک کنترل RadioButtonList (بدون استفاده از عنصر asp:ListItem) در یک صفحه aspx. ایجاد فرمایید:
<body>
<form runat="server">
<asp:RadioButtonList id="rb" runat="server" AutoPostBack="True" />
</form>
</body>
</html>
سپس اسکریپتی را برای ایجاد لیست اضافه نمایید:
sub Page_Load
if Not Page.IsPostBack then
dim mycountries=New SortedList
mycountries.Add("N","Norway")
mycountries.Add("S","Sweden")
mycountries.Add("F","France")
mycountries.Add("I","Italy")
rb.DataSource=mycountries
rb.DataValueField="Key"
rb.DataTextField="Value"
rb.DataBind()
end if
end sub
</script>
<html>
<body>
<form runat="server">
<asp:RadioButtonList id="rb" runat="server" AutoPostBack="True" />
</form>
</body>
</html>
سپس زیرروالی را به کد اضافه می کنیم تا هنگامی که کاربر روی یک عنصر در کنترل RadioButtonList کلیک می کند، اجرا شود. هنگامی که دکمه رادیویی کلیک شد، متنی در label ظاهر می شود:
مثال
sub Page_Load
if Not Page.IsPostBack then
dim mycountries=New SortedList
mycountries.Add("N","Norway")
mycountries.Add("S","Sweden")
mycountries.Add("F","France")
mycountries.Add("I","Italy")
rb.DataSource=mycountries
rb.DataValueField="Key"
rb.DataTextField="Value"
rb.DataBind()
end if
end sub
sub displayMessage(s as Object,e As EventArgs)
lbl1.text="Your favorite country is: " & rb.SelectedItem.Text
end sub
</script>
<html>
<body>
<form runat="server">
<asp:RadioButtonList id="rb" runat="server"
AutoPostBack="True" onSelectedIndexChanged="displayMessage" />
<p><asp:label id="lbl1" runat="server" /></p>
</form>
</body>
</html>
خروجي کد بالا:
آموزش WebForm-فایل XML
می توانیم فایل XML را به کنترل های انتخابی متصل کنیم.
فایل XML
در تکه کد زیر یک فایل XML با نام "countries.xml" را ملاحظه می فرمایید.
<countries>
<country>
<text>Norway</text>
<value>N</value>
</country>
<country>
<text>Sweden</text>
<value>S</value>
</country>
<country>
<text>France</text>
<value>F</value>
</country>
<country>
<text>Italy</text>
<value>I</value>
</country>
</countries>
فایل countries.xml را ملاحظه فرمایید.
اتصال یک DataSet به کنترل انتخابی
ابتدا فضای نام "System.Data" را وارد نمایید. به این فضای نام برای کار با شیء DataSet نیاز داریم. دایرکتیو زیر را به بالای یک صفحه aspx. وارد نمایید.
در مرحله بعد، یک DataSet برای فایل XML ایجاد نمایید و هنگامی که صفحه بارگذاری شد، فایل XML را درون DataSet بارگذاری نمایید.
sub Page_Load
if Not Page.IsPostBack then
dim mycountries=New DataSet
mycountries.ReadXml(MapPath("countries.xml"))
end if
end sub
برای اتصال یک کنترل RadioButtonList، ابتدا یک کنترل RadioButtonList (بدون استفاده از عنصر asp:ListItem) در یک صفحه aspx. ایجاد فرمایید:
<body>
<form runat="server">
<asp:RadioButtonList id="rb" runat="server" AutoPostBack="True" />
</form>
</body>
</html>
سپس اسکریپتی ایجاد نمایید که XML DataSet را ایجاد می نماید:
<script runat="server">
sub Page_Load
if Not Page.IsPostBack then
dim mycountries=New DataSet
mycountries.ReadXml(MapPath("countries.xml"))
rb.DataSource=mycountries
rb.DataValueField="value"
rb.DataTextField="text"
rb.DataBind()
end if
end sub
</script>
<html>
<body>
<form runat="server">
<asp:RadioButtonList id="rb" runat="server"
AutoPostBack="True" onSelectedIndexChanged="displayMessage" />
</form>
</body>
</html>
سپس زیرروالی را به کد اضافه می کنیم تا هنگامی که کاربر روی عنصری در کنترل RadioButtonList کلیک می کند، اجرا شود. هنگامی که دکمه رادیویی کلیک شد، متنی در label ظاهر می شود
مثال
<script runat="server">
sub Page_Load
if Not Page.IsPostBack then
dim mycountries=New DataSet
mycountries.ReadXml(MapPath("countries.xml"))
rb.DataSource=mycountries
rb.DataValueField="value"
rb.DataTextField="text"
rb.DataBind()
end if
end sub
sub displayMessage(s as Object,e As EventArgs)
lbl1.text="Your favorite country is: " & rb.SelectedItem.Text
end sub
</script>
<html>
<body>
<form runat="server">
<asp:RadioButtonList id="rb" runat="server"
AutoPostBack="True" onSelectedIndexChanged="displayMessage" />
<p><asp:label id="lbl1" runat="server" /></p>
</form>
</body>
</html>
خروجي کد بالا:
آموزش WebForm-کنترل Repeater
کنترل Repeater برای نمایش لیستی از آیتم های تکراری استفاده می شوند که به یک کنترل متصل می شوند.
اتصال یک DataSet به یک کنترل Repeater
کنترل Repeater برای نمایش لیستی از آیتم های تکراری استفاده می شوند که به یک کنترل متصل می شوند. کنترل Repeater ممکن است به یک جدول پایگاه داده، یک فایل XML، یا هر لیستی از آیتم ها متصل شود. در این بیاموز ما نحوه اتصال یک فایل XML را به کنترل Repeater نشان خواهیم داد.
ما از فایل XML زیر در مثال های این آموزش استفاده کرده ایم ("cdcatalog.xml")
<catalog>
<cd>
<title>Empire Burlesque</title>
<artist>Bob Dylan</artist>
<country>USA</country>
<company>Columbia</company>
<price>10.90</price>
<year>1985</year>
</cd>
<cd>
<title>Hide your heart</title>
<artist>Bonnie Tyler</artist>
<country>UK</country>
<company>CBS Records</company>
<price>9.90</price>
<year>1988</year>
</cd>
<cd>
<title>Greatest Hits</title>
<artist>Dolly Parton</artist>
<country>USA</country>
<company>RCA</company>
<price>9.90</price>
<year>1982</year>
</cd>
<cd>
<title>Still got the blues</title>
<artist>Gary Moore</artist>
<country>UK</country>
<company>Virgin records</company>
<price>10.20</price>
<year>1990</year>
</cd>
<cd>
<title>Eros</title>
<artist>Eros Ramazzotti</artist>
<country>EU</country>
<company>BMG</company>
<price>9.90</price>
<year>1997</year>
</cd>
</catalog>
ابتدا فضای نام "System.Data" را وارد نمایید. به این فضای نام برای کار با شیء DataSet نیاز داریم. دایرکتیو زیر را به بالای یک صفحه aspx. وارد نمایید.
در مرحله بعد، یک DataSet برای فایل XML ایجاد نمایید و هنگامی که صفحه بارگذاری شد، فایل XML را درون DataSet بارگذاری نمایید.
sub Page_Load
if Not Page.IsPostBack then
dim mycdcatalog=New DataSet
mycdcatalog.ReadXml(MapPath("cdcatalog.xml"))
end if
end sub
در ادامه، یک کنترل Repeater در صفحه aspx. اضافه می کنیم. محتوای عنصر <HeaderTemplate> تنها یک بار و اولین بار با خروجی پر می شود، سپس محتوای عنصر <ItemTemplate> به ازای هر رکورد در DataSet، تکمیل می شود، و در نهایت محتوای عنصر <FooterTemplate> یکبار با خروجی پر می شود.
<body>
<form runat="server">
<asp:Repeater id="cdcatalog" runat="server">
<HeaderTemplate>
...
</HeaderTemplate>
<ItemTemplate>
...
</ItemTemplate>
<FooterTemplate>
...
</FooterTemplate>
</asp:Repeater>
</form>
</body>
</html> ب
سپس اسکریپتی برای ایجاد DataSet اضافه می کنیم و mycdcatalog DataSet را به کنترل Repeater متصل می کنیم. همچنین کنترل Repeater را با تگ های Html پر می کنیم و آیتم ها را با استفاده از <% ("Container.DataItem("fieldname#%> به بخش <ItemTemplate> متصل می کنیم.
مثال
<script runat="server">
sub Page_Load
if Not Page.IsPostBack then
dim mycdcatalog=New DataSet
mycdcatalog.ReadXml(MapPath("cdcatalog.xml"))
cdcatalog.DataSource=mycdcatalog
cdcatalog.DataBind()
end if
end sub
</script>
<html>
<body>
<form runat="server">
<asp:Repeater id="cdcatalog" runat="server">
<HeaderTemplate>
<table border="1" width="100%">
<tr>
<th>Title</th>
<th>Artist</th>
<th>Country</th>
<th>Company</th>
<th>Price</th>
<th>Year</th>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td><%#Container.DataItem("title")%></td>
<td><%#Container.DataItem("artist")%></td>
<td><%#Container.DataItem("country")%></td>
<td><%#Container.DataItem("company")%></td>
<td><%#Container.DataItem("price")%></td>
<td><%#Container.DataItem("year")%></td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
</form>
</body>
</html>
خروجي کد بالا:
| Title | Artist | Company | Price |
|---|---|---|---|
| Empire Burlesque | Bob Dylan | Columbia | 10.90 |
| Hide your heart | Bonnie Tyler | CBS Records | 9.90 |
| Greatest Hits | Dolly Parton | RCA | 9.90 |
| Still got the blues | Gary Moore | Virgin records | 10.20 |
| Eros | Eros Ramazzotti | BMG | 9.90 |
استفاده از <AlternatingItemTemplate>
می توانیم از عنصر <AlternatingItemTemplate> بعد از عنصر <ItemTemplate> استفاده کنیم تا در رابطه با ظاهر ردیف های خروجی توضیح دهیم. در مثال زیر هر ردیف جدول با رنگ خاکستری کم رنگ نمایش داده می شود:
مثال
<script runat="server">
sub Page_Load
if Not Page.IsPostBack then
dim mycdcatalog=New DataSet
mycdcatalog.ReadXml(MapPath("cdcatalog.xml"))
cdcatalog.DataSource=mycdcatalog
cdcatalog.DataBind()
end if
end sub
</script>
<html>
<body>
<form runat="server">
<asp:Repeater id="cdcatalog" runat="server">
<HeaderTemplate>
<table border="1" width="100%">
<tr>
<th>Title</th>
<th>Artist</th>
<th>Country</th>
<th>Company</th>
<th>Price</th>
<th>Year</th>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td><%#Container.DataItem("title")%></td>
<td><%#Container.DataItem("artist")%></td>
<td><%#Container.DataItem("country")%></td>
<td><%#Container.DataItem("company")%></td>
<td><%#Container.DataItem("price")%></td>
<td><%#Container.DataItem("year")%></td>
</tr>
</ItemTemplate>
<AlternatingItemTemplate>
<tr bgcolor="#e8e8e8">
<td><%#Container.DataItem("title")%></td>
<td><%#Container.DataItem("artist")%></td>
<td><%#Container.DataItem("country")%></td>
<td><%#Container.DataItem("company")%></td>
<td><%#Container.DataItem("price")%></td>
<td><%#Container.DataItem("year")%></td>
</tr>
</AlternatingItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
</form>
</body>
</html>
خروجي کد بالا:
| Title | Artist | Company | Price |
|---|---|---|---|
| Empire Burlesque | Bob Dylan | Columbia | 10.90 |
| Hide your heart | Bonnie Tyler | CBS Records | 9.90 |
| Greatest Hits | Dolly Parton | RCA | 9.90 |
| Still got the blues | Gary Moore | Virgin records | 10.20 |
| Eros | Eros Ramazzotti | BMG | 9.90 |
استفاده از <SeparatorTemplate>
تگ <SeparatorTemplate> می تواند برای ایجاد یک جدا کننده بین هر رکورد استفاده شود. مثال زیر نحوه درج یک خط افقی بین هر ردیف جدول را نمایش می دهد:
مثال
<script runat="server">
sub Page_Load
if Not Page.IsPostBack then
dim mycdcatalog=New DataSet
mycdcatalog.ReadXml(MapPath("cdcatalog.xml"))
cdcatalog.DataSource=mycdcatalog
cdcatalog.DataBind()
end if
end sub
</script>
<html>
<body>
<form runat="server">
<asp:Repeater id="cdcatalog" runat="server">
<HeaderTemplate>
<table border="0" width="100%">
<tr>
<th>Title</th>
<th>Artist</th>
<th>Country</th>
<th>Company</th>
<th>Price</th>
<th>Year</th>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td><%#Container.DataItem("title")%></td>
<td><%#Container.DataItem("artist")%></td>
<td><%#Container.DataItem("country")%></td>
<td><%#Container.DataItem("company")%></td>
<td><%#Container.DataItem("price")%></td>
<td><%#Container.DataItem("year")%></td>
</tr>
</ItemTemplate>
<SeparatorTemplate>
<tr>
<td colspan="6"><hr /></td>
</tr>
</SeparatorTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
</form>
</body>
</html>
خروجي کد بالا:
| Title | Artist | Company | Price |
|---|---|---|---|
| Empire Burlesque | Bob Dylan | Columbia | 10.90 |
|
|
|||
| Hide your heart | Bonnie Tyler | CBS Records | 9.90 |
|
|
|||
| Greatest Hits | Dolly Parton | RCA | 9.90 |
|
|
|||
| Still got the blues | Gary Moore | Virgin records | 10.20 |
|
|
|||
| Eros | Eros Ramazzotti | BMG | 9.90 |
آموزش WebForm-کنترل DataList
کنترل DataList، مانند کنترل Repeater، برای نمایش لیستی از آیتم های تکراری استفاده می شوند که به یک کنترل متصل می شوند. با این وجود، کنترل DataList، داده ها را به صورت پیش فرض در یک جدول قرار می دهد.
اتصال یک DataSet به کنترل Datalist
کنترل DataList، مانند کنترلRepeater، برای نمایش لیستی از آیتم های تکراری استفاده می شوند که به یک کنترل متصل می شوند. با این وجود کنترل DataList، داده ها را به صورت پیش فرض در یک جدول قرار می دهد. کنترل DataList ممکن است به یک جدول پایگاه داده، یک فایل XML، یا هر لیستی از آیتم ها متصل شود. در این آموزش، نحوه اتصال یک فایل XML را به کنترل DataList نشان خواهیم داد.
از فایل XML زیر در مثال های این آموزش استفاده کرده ایم ("cdcatalog.xml")
<catalog>
<cd>
<title>Empire Burlesque</title>
<artist>Bob Dylan</artist>
<country>USA</country>
<company>Columbia</company>
<price>10.90</price>
<year>1985</year>
</cd>
<cd>
<title>Hide your heart</title>
<artist>Bonnie Tyler</artist>
<country>UK</country>
<company>CBS Records</company>
<price>9.90</price>
<year>1988</year>
</cd>
<cd>
<title>Greatest Hits</title>
<artist>Dolly Parton</artist>
<country>USA</country>
<company>RCA</company>
<price>9.90</price>
<year>1982</year>
</cd>
<cd>
<title>Still got the blues</title>
<artist>Gary Moore</artist>
<country>UK</country>
<company>Virgin records</company>
<price>10.20</price>
<year>1990</year>
</cd>
<cd>
<title>Eros</title>
<artist>Eros Ramazzotti</artist>
<country>EU</country>
<company>BMG</company>
<price>9.90</price>
<year>1997</year>
</cd>
</catalog>
فایل XML فوق را از اینجا دانلود نمایید: cdcatalog.xml
ابتدا فضای نام "System.Data" را وارد نمایید. به این فضای نام برای کار با شیء DataSet نیاز داریم. دایرکتیو زیر را به بالای یک صفحه aspx. وارد نمایید.
در مرحله بعد، یک DataSet برای فایل XML ایجاد نمایید و هنگامی که صفحه بارگذاری شد، فایل XML را درون DataSet بارگذاری نمایید.
sub Page_Load
if Not Page.IsPostBack then
dim mycdcatalog=New DataSet
mycdcatalog.ReadXml(MapPath("cdcatalog.xml"))
end if
end sub
در ادامه، یک کنترل DataList در صفحه aspx. اضافه می کنیم. محتوای عنصر <HeaderTemplate> تنها یک بار و اولین بار با خروجی پر می شود، سپس محتوای عنصر <ItemTemplate> به ازای هر "record" در DataSet، تکمیل می شود، و در نهایت محتوای عنصر <FooterTemplate> یکبار با خروجی پر می شود.
<body>
<form runat="server">
<asp:DataList id="cdcatalog" runat="server">
<HeaderTemplate>
...
</HeaderTemplate>
<ItemTemplate>
...
</ItemTemplate>
<FooterTemplate>
...
</FooterTemplate>
</asp:DataList>
</form>
</body>
</html>
سپس اسکریپتی برای ایجاد DataSet اضافه می کنیم و mycdcatalog DataSet را به کنترل DataList متصل می کنیم. همچنین کنترل DataList را با تگ های <HeaderTemplate> که حاوی عنوان جدول می باشد، و با استفاده از <ItemTemplate> که حاوی داده هایی است که بایستی نمایش داده شود، و <FooterTemplate> که حاوی متن است پر می کنیم. توجه فرمایید که ویژگی gridline کنترل Dataset معادل "both" قرار داده شده است تا حاشیه های جدول را نمایش دهد.
مثال
<script runat="server">
sub Page_Load
if Not Page.IsPostBack then
dim mycdcatalog=New DataSet
mycdcatalog.ReadXml(MapPath("cdcatalog.xml"))
cdcatalog.DataSource=mycdcatalog
cdcatalog.DataBind()
end if
end sub
</script>
<html>
<body>
<form runat="server">
<asp:DataList id="cdcatalog"
gridlines="both" runat="server">
<HeaderTemplate>
My CD Catalog
</HeaderTemplate>
<ItemTemplate>
"<%#Container.DataItem("title")%>" of
<%#Container.DataItem("artist")%> -
$<%#Container.DataItem("price")%>
</ItemTemplate>
<FooterTemplate>
Copyright Hege Refsnes
</FooterTemplate>
</asp:DataList>
</form>
</body>
</html>
خروجي کد بالا:
| My CD Catalog |
| "Empire Burlesque" of Bob Dylan - $10.90 |
| "Hide your heart" of Bonnie Tyler - $9.90 |
| "Greatest Hits" of Dolly Parton - $9.90 |
| "Still got the blues" of Gary Moore - $10.20 |
| "Eros" of Eros Ramazzotti - $9.90 |
| © Hege Refsnes |
استفاده از استایل
می توانید برای اینکه خروجی را زیباتر نمایید، به کنترل DataList استایل اضافه نمایید:
مثال
<script runat="server">
sub Page_Load
if Not Page.IsPostBack then
dim mycdcatalog=New DataSet
mycdcatalog.ReadXml(MapPath("cdcatalog.xml"))
cdcatalog.DataSource=mycdcatalog
cdcatalog.DataBind()
end if
end sub
</script>
<html>
<body>
<form runat="server">
<asp:DataList id="cdcatalog"
runat="server"
cellpadding="2"
cellspacing="2"
borderstyle="inset"
backcolor="#e8e8e8"
width="100%"
headerstyle-font-name="Verdana"
headerstyle-font-size="12pt"
headerstyle-horizontalalign="center"
headerstyle-font-bold="true"
itemstyle-backcolor="#778899"
itemstyle-forecolor="#ffffff"
footerstyle-font-size="9pt"
footerstyle-font-italic="true">
<HeaderTemplate>
My CD Catalog
</HeaderTemplate>
<ItemTemplate>
"<%#Container.DataItem("title")%>" of
<%#Container.DataItem("artist")%> -
$<%#Container.DataItem("price")%>
</ItemTemplate>
<FooterTemplate>
Copyright Hege Refsnes
</FooterTemplate>
</asp:DataList>
</form>
</body>
</html>
خروجي کد بالا:
| My CD Catalog |
| "Empire Burlesque" of Bob Dylan - $10.90 |
| "Hide your heart" of Bonnie Tyler - $9.90 |
| "Greatest Hits" of Dolly Parton - $9.90 |
| "Still got the blues" of Gary Moore - $10.20 |
| "Eros" of Eros Ramazzotti - $9.90 |
| © Hege Refsnes |
استفاده از <AlternatingItemTemplate>
می توانیم از عنصر <AlternatingItemTemplate> بعد از عنصر <ItemTemplate> استفاده کنیم تا در رابطه با ظاهر ردیف های خروجی توضیح دهیم. شما ممکن است به داده های بخش <AlternatingItemTemplate> استایل اضافه نمایید:
مثال
<script runat="server">
sub Page_Load
if Not Page.IsPostBack then
dim mycdcatalog=New DataSet
mycdcatalog.ReadXml(MapPath("cdcatalog.xml"))
cdcatalog.DataSource=mycdcatalog
cdcatalog.DataBind()
end if
end sub
</script>
<html>
<body>
<form runat="server">
<asp:DataList id="cdcatalog"
runat="server"
cellpadding="2"
cellspacing="2"
borderstyle="inset"
backcolor="#e8e8e8"
width="100%"
headerstyle-font-name="Verdana"
headerstyle-font-size="12pt"
headerstyle-horizontalalign="center"
headerstyle-font-bold="True"
itemstyle-backcolor="#778899"
itemstyle-forecolor="#ffffff"
alternatingitemstyle-backcolor="#e8e8e8"
alternatingitemstyle-forecolor="#000000"
footerstyle-font-size="9pt"
footerstyle-font-italic="True">
<HeaderTemplate>
My CD Catalog
</HeaderTemplate>
<ItemTemplate>
"<%#Container.DataItem("title")%>" of
<%#Container.DataItem("artist")%> -
$<%#Container.DataItem("price")%>
</ItemTemplate>
<AlternatingItemTemplate>
"<%#Container.DataItem("title")%>" of
<%#Container.DataItem("artist")%> -
$<%#Container.DataItem("price")%>
</AlternatingItemTemplate>
<FooterTemplate>
© Hege Refsnes
</FooterTemplate>
</asp:DataList>
</form>
</body>
</html>
خروجي کد بالا:
| My CD Catalog |
| "Empire Burlesque" of Bob Dylan - $10.90 |
| "Hide your heart" of Bonnie Tyler - $9.90 |
| "Greatest Hits" of Dolly Parton - $9.90 |
| "Still got the blues" of Gary Moore - $10.20 |
| "Eros" of Eros Ramazzotti - $9.90 |
| © Hege Refsnes |
آموزش WebForm-پایگاه داده
ADO.NET قسمتی از NET Framework. است. ADO.NET برای مدیریت دستیابی به داده استفاده می شود. با استفاده از ADO.NET می توانید با پایگاه داده کار کنید.
ADO.NET چیست؟
- ADO.NET بخشی از NET Framwork. است
- ADO.NET حاوی یک سری کلاس است که برای مدیریت دستیابی داده استفاده می شوند
- ADO.NET تماما بر مبنای XML است
- ADO.NET، برخلاف ADO، شیء Recordset ندارد
ایجاد اتصال پایگاه داده
در این آموزش قصد داریم از پایگاه داده Northwind در مثال ها استفاده کنیم.
ابتدا فضای نام "System.Data.OleDB" را وارد نمایید. به این فضای نام برای کار با Microsoft Access و سایر سرویس دهنده های OLEDB نیاز داریم.
سپس اتصالی به پایگاه داده در زیرروال Page_Load ایجاد می کنیم.
متغیر dbconn را، به عنوان یک شیء از کلاس OleDbConnection با استفاده از رشته اتصالی که سرویس دهنده OLE DB و محل پایگاه داده را مشخص می کند، تعریف می کنیم.
سپس اتصال پایگاه داده را باز می کنیم:
<script runat="server">
sub Page_Load
dim dbconn
dbconn=New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;
data source=" & server.mappath("northwind.mdb"))
dbconn.Open()
end sub
</script>
نکته: رشته اتصال می بایست یک رشته پیوسته بدون شکستن خط (رفتن به خط بعد) می باشد.
ایجاد دستور پایگاه داده
برای واکشی رکوردها از پایگاه داده، متغیر dbcomm را به عنوان شیء کلاس OleDbCommand ایجاد می نماییم. کلاس OleDbCommand برای اجرای پرس و جوی SQL جداول پایگاه داده است.
<script runat="server">
sub Page_Load
dim dbconn,sql,dbcomm
dbconn=New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;
data source=" & server.mappath("northwind.mdb"))
dbconn.Open()
sql="SELECT * FROM customers"
dbcomm=New OleDbCommand(sql,dbconn)
end sub
</script>
ایجاد DataReader
کلاس OleDbDataReader برای خواندن جریانی از رکوردهای یک منبع داده استفاده می شود.
DataReader با استفاده از فراخوانی متد ExecuteReader از شیء OleDbDataReader ایجاد می گردد:
<script runat="server">
sub Page_Load
dim dbconn,sql,dbcomm,dbread
dbconn=New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;
data source=" & server.mappath("northwind.mdb"))
dbconn.Open()
sql="SELECT * FROM customers"
dbcomm=New OleDbCommand(sql,dbconn)
dbread=dbcomm.ExecuteReader()
end sub
</script>
اتصال به کنترل Repeater
در ادامه DataReader را به کنترل Repeater متصل می نماییم.
مثال
<script runat="server">
sub Page_Load
dim dbconn,sql,dbcomm,dbread
dbconn=New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;
data source=" & server.mappath("northwind.mdb"))
dbconn.Open()
sql="SELECT * FROM customers"
dbcomm=New OleDbCommand(sql,dbconn)
dbread=dbcomm.ExecuteReader()
customers.DataSource=dbread
customers.DataBind()
dbread.Close()
dbconn.Close()
end sub
</script>
<html>
<body>
<form runat="server">
<asp:Repeater id="customers" runat="server">
<HeaderTemplate>
<table border="1" width="100%">
<tr>
<th>Companyname</th>
<th>Contactname</th>
<th>Address</th>
<th>City</th>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td><%#Container.DataItem("companyname")%></td>
<td><%#Container.DataItem("contactname")%></td>
<td><%#Container.DataItem("address")%></td>
<td><%#Container.DataItem("city")%></td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
</form>
</body>
</html>
خروجي کد بالا:
| Companyname | Contactname | Address | City |
|---|---|---|---|
| Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin |
| Berglunds snabbköp | Christina Berglund | Berguvsvägen 8 | Luleå |
| Centro comercial Moctezuma | Francisco Chang | Sierras de Granada 9993 | México D.F. |
| Ernst Handel | Roland Mendel | Kirchgasse 6 | Graz |
| FISSA Fabrica Inter. Salchichas S.A. | Diego Roel | C/ Moralzarzal, 86 | Madrid |
| Galería del gastrónomo | Eduardo Saavedra | Rambla de Cataluña, 23 | Barcelona |
| Island Trading | Helen Bennett | Garden House Crowther Way | Cowes |
| Königlich Essen | Philip Cramer | Maubelstr. 90 | Brandenburg |
| Laughing Bacchus Wine Cellars | Yoshi Tannamuri | 1900 Oak St. | Vancouver |
| Magazzini Alimentari Riuniti | Giovanni Rovelli | Via Ludovico il Moro 22 | Bergamo |
| North/South | Simon Crowther | South House 300 Queensbridge | London |
| Paris spécialités | Marie Bertrand | 265, boulevard Charonne | Paris |
| Rattlesnake Canyon Grocery | Paula Wilson | 2817 Milton Dr. | Albuquerque |
| Simons bistro | Jytte Petersen | Vinbæltet 34 | København |
| The Big Cheese | Liz Nixon | 89 Jefferson Way Suite 2 | Portland |
| Vaffeljernet | Palle Ibsen | Smagsløget 45 | Århus |
| Wolski Zajazd | Zbyszek Piestrzeniewicz | ul. Filtrowa 68 | Warszawa |
بستن اتصال پایگاه داده
همواره هم DataReader و هم اتصال پایگاه داده را پس از دستیابی به پایگاه داده ببندید:
dbconn.Close()
آموزش WebForm-صفحه Master
master page قالبی را برای سایر صفحات سایت شما فراهم می کنند.
Master Pages
master page به شما احازه می دهد تا یک نمای ثابت و رفتار یکسانی برای تمام صفحات (یا گروهی از صفحات) کاربرد وب خود ایجاد نمایید.
یک صفحه master، قالبی با layout و کارایی مشترک، برای سایر صفحات فراهم می کند. master page، برای قرار گرفتن محتوا تعدادی placeholder تعریف می کند، که content page ها داخل این placeholder ها قرار می گیرند. نتیجه خروجی ترکیب content page و master page می باشد.
content page ها حاوی محتوایی است که قصد دارید نمایش دهید.
هنگامی که کاربری یک content page را درخواست کرد، ASP.NET صفحات master page و content page را برای تولید خروجی ترکیب می کند.
Master Page مثال
<html>
<body>
<h1>Standard Header From Masterpage</h1>
<asp:ContentPlaceHolder id="CPH1" runat="server">
</asp:ContentPlaceHolder>
</body>
</html>
master page بالا یک صفحه html ساده است که به عنوان قالب برای سایر صفحات طراحی شده است.
دایرکتیو Master @ صفحه را به عنوان master page تعریف می کند.
master page حاوی یک تگ placeholder به صورت <asp:ContentPlaceHolder> برای هر محتوا می باشد.
ویژگی id="CPH1"، که برای شناسایی placeholder به کار می رود، اجازه می دهد تعداد زیادی Placeholder در یک master page مشابه قرار گیرد.
این master page با نام "master1.master" ذخیره گردیده است.
|
|
نکته: master page همچنین می تواند حاوی کدهایی باشد که محتوای پویا را نمایش می دهدNote: The master page can also contain code, allowing dynamic content. |
|---|
Content Page مثال
<asp:Content ContentPlaceHolderId="CPH1" runat="server">
<h2>Individual Content</h2>
<p>Paragraph 1</p>
<p>Paragraph 2</p>
</asp:Content>
content page فوق یکی از چندین content page ی است که می تواند در کاربرد وب شما وجود داشته باشد.
دایرکتیو Page @ صفحه را به عنوان content page استاندارد تعریف می کند.
content page حاوی تگ <asp:Content> است که در آن به صفحه اصلی ارجاع داده شده است. (ContentPlaceHolderId="CPH1")
هنگامی که کاربر این صفحه را درخواست کرد، ASP.NET صفحات master page و content page را ادغام می کند.
|
|
نکته: متن محتوا بایستی داخل تگ <asp:Content> باشد . خارج از این تگ اجازه درج محتوا وجود ندارد. |
|---|
Content Page With Controls
<asp:Content ContentPlaceHolderId="CPH1" runat="server">
<h2>W3Schools</h2>
<form runat="server">
<asp:TextBox id="textbox1" runat="server" />
<asp:Button id="button1" runat="server" text="Button" />
</form>
</asp:Content>
content page بالا نشان می دهد که چگونه کنترل های NET. می توانند داخل content page قرار گیرند دقیقا مانند وقتی که در یک صفحه معمولی قرار می گیرند.
آموزش WebForm-کنترل Navigation
ASP.NET دارای کنترل های navigation می باشد
Web Site Navigation
مدیریت منو برای سایت های بزرگ مشکل و وقت گیر است.
در ASP.NET، منو می تواند در یک فایل ذخیره شود تا مدیریت آن آسان تر شود. این فایل web.sitemap نامیده می شود، و در ریشه دایرکتوری وب ذخیره می شود.
به علاوه، ASP.NET سه کنترل navigation دارد:
- Dynamic menus
- TreeViews
- Site Map Path
فایل Sitemap
فایل sitemap زیر برای این آموزش مورد استفاده قرار گرفته است:
<siteMap>
<siteMapNode title="Home" url="/aspnet/w3home.aspx">
<siteMapNode title="Services" url="/aspnet/w3services.aspx">
<siteMapNode title="Training" url="/aspnet/w3training.aspx"/>
<siteMapNode title="Support" url="/aspnet/w3support.aspx"/>
</siteMapNode>
</siteMapNode>
</siteMap>
قوانین ایجاد یک فایل sitemap:
- فایل XML باید حاوی تگ <sitemap> باشد و سایر محتوا در آن قرار گیرد.
- تگ <sitemap> تنها می تواند حاوی یک گره فرزند <siteMapNode> باشد. (صفحه اصلی سایت.)
- هر <siteMapNode> می تواند دارای چندین گره فرزند باشد (WebPage)
- هر گره <siteMapNode> دارای ویژگی هایی است که URL و عنوان صفحه را تعریف می کند.
|
|
نکته: فایل sitemao بایستی در دایرکتوری ریشه وب قرار گیرد و URL بایستی مرتبط با دایرکتوری ریشه باشد. |
|---|
Dynamic Menu
کنترل <asp:Menu> یک منوی navigation استاندارد برای سایت ایجاد می کند.
مثال:
<form runat="server">
<asp:Menu runat="server" DataSourceId="nav1" />
</form>
کنترل <asp:Menu> در مثال بالا یک placeholder برای منوی navigation ی است که توسط سرور ایجاد گردیده است.
منبع داده کنترل با ویژگی DataSourceId تعریف می شود. شناسه "id="nav1 منو را به یک کنترل<asp:SiteMapDataSource> متصل می نماید.
کنترل <asp:SiteMapDataSource> به طور خود کار به فایل sitemap پیش فرض متصل می شود (web.sitemap).
TreeView
کنترل <asp:TreeView> منوی navigation چند سطحی را نمایش می دهد.
منو، مشابه یک درخت است که حاوی شاخه های متعددی است که می توانند با نماد + یا - باز و بسته شوند.
مثال:
<form runat="server">
<asp:TreeView runat="server" DataSourceId="nav1" />
</form>
کنترل <asp:TreeView> در مثال بالا placeholder ی است برای منوی navigation که توسط سرور ایجاد گردیده است.
منبع داده با ویژگی DataSourceId تعریف می شود. شناسه "id="nav1 آن را به کنترل <asp:SiteMapDataSource>متصل می کند.
کنترل <asp:SiteMapDataSource> به طور اتوماتیک، به فایل sitemap پیش فرض متصل می شود (web.sitemap).
SiteMapPath
کنترل SiteMapPath مسیر رسیدن به صفحه جاری را نمایش می دهد. مسیر به عنوان یک لینک قابل کلیک به صفحه قبلی عمل می کند.
بر خلاف TreeView و کنترل منو، کنترل SiteMapPath از SiteMapDataSource استفاده نمی کند.
|
|
نکته: اگر SiteMapPath به صورت صحیح نمایش داده نشد، به احتمال زیاد، یک خطای URL وجود (در تایپ آن) در فایل Web.sitemap وجود دارد. |
|---|
Code مثال:
<asp:SiteMapPath runat="server" />
</form>
کنترل <asp:SiteMapPath> در مثال بالا placeholder ی است برای نمایش مسیر سایت که توسط سرور ایجاد شده است.
در اینجا آموزش ASP.NET تمام شد
از مدیران خواهش می کنم این پست رو به صورت اعلان در بیارن تا همه استفاده کنند
منبع : بیاموز
در اینجا آموزش ASP.NET تمام شد
از مدیران خواهش می کنم این پست رو به صورت اعلان در بیارن تا همه استفاده کنند
منبع : بیاموز
با سلام و احترام خدمت شما و با تشکر از شما بابت قرار دادن این آموزش
کاری که از دستم بر میومد این بود که تاپیکتون رو به صورت ویژه قرار بدم که در بالای تالار نشون داده بشه و اون رو قفل کنم که کاربران نتونن دیگه توی اون اموزشها چیزی رو بنویسن و همچنین این تاپیک رو به مدیر ارشد انجمن ها برای قرار دادن در اعلان سایت معرفی کنم ، که تمامی این کارها رو انجام دادم
منتظر ارائه فعالیت های ارزشمند دیگر شما نیز هستیم
موفق باشید
در اینجا آموزش ASP.NET تمام شد
از مدیران خواهش می کنم این پست رو به صورت اعلان در بیارن تا همه استفاده کنند
منبع : بیاموز
با سلام و احترام
در صورتی که برایتان مقدور است فایل ورد یا پی دی اف این آموزش رو هم تهیه کنید تا اگر کاربران تمایل داشته باشند تمامی آموزش را در قالب یک فایل دریافت کنند ، این امکان برایشان فراهم شود .
hosseinb68_rasekhoon@yahoo.com
مدیر تالار توسعه تکنولوژی وب
با تشکر از شما / موفق باشید