Mastering ASP.Net DataBinding

來源:互聯網
上載者:User
asp.net|asp.net begin:

Mastering ASP.Net DataBinding
Karl Seguin ?karlseguin@hotmail.com


Table of Contents
Introduction
The Sample Program
Understanding DataItem
Formatting
Inline
OnItemDataBound
OnItemCreated
Nested Binding
Inline
OnItemDataBound
Handling Events
Download

This article is available at Code Project. Check it out to make comments, discuss or rate the article

I'd like to thank Jean-Claude Manoli for developing his C# Code format, which i used in writing this tutorial.
Introduction
Questions regarding databinding, in one form or another, are probably the most asked in the aspnet newsgroups. Its clear everyone loves the idea of databinding but that more advanced functionality, such as event handling, conditional formatting and fine-tuning, aren't straightforward. The goal of this tutorial is shed light on some of the more common and frequently asked questions about the capabilities of databinding.
The Sample Program
Throughout this tutorial we'll use two separate data sources. The first will be your every-day dataset, the other will be a strongly-typed custom collection containing strongly-typed objects.

Our dataset will contain two tables, Customers and Orders:
Customer Structure Order Structure
Name Type Description Name Type Description
CustomerId1 Int32 Unique customer identifier OrderId Int32 Unique order identifier
Name String Name of the customer CustomerId1 Int32 Identifier of the custom who placed the order
Zip String Customer's primary ZIP or Portal code Ordered DateTime Date the order was placed on
Enabled Boolean Whether the customer is currently active/enabled Amount Decimal Dollar value of the order

1A DataRelation exists between the Customer.CustomerId and Order.CustomerId columns.

Our business entities will consist of an Owner and a Pet class:
Owner Structure Pets Structure
Name Type Description Name Type Description
OwnerId Int32 Unique owner identifier PetId Int32 Unique pet identifier
YearOfBirth Int32 The year the owner was born in Name String Name of the pet
FirstName String Owner's first name IsNeutured Boolean Whether or not the pet is neutured
LastName String Owner's last name Type PetType Indicates the type of pet (Dog, Cat, Fish, Bird, Rodent, Other)
Pets PetCollection Collection of pets the owner has

Understanding DataItem
You've undoudbtedly made frequent use of the DataItem property, namely when using the DataBinding syntax to output a value:
1: <%# DataBinder.Eval(Container.DataItem, "customerId") %>
It's important to understand that DataItem is actually an object, and that when you use the DataBinder.Eval function, it basically needs to figure out what type of object it is and how to get "customerId" from it. That's because your DataSource can be different things, such as a dataset or dataview, an arraylist or hashtable, a custom collection and more. Binding happens on a row-by-row basis and DataItem actually represents the current row being bound. For a DataSet, DataTable or DataView DataItem is actually an instance of DataRowView (you might think that the DataItem for a DataSet or DataTable would be an instance of DataRow, but when you bind either of these, the DefaultView is actually used, therefore DataItem will always be a DataRowView). When you are binding to a collection, DataItem is an instance of the item within the collection. We can observe this more clearly with the following code:
1: <%@ Import namespace="System.Data" %>
2: <%@ Import namespace="BindingSample" %>
3: <asp:Repeater id="dataSetRepeater" Runat="server">
4: <ItemTemplate>
5: <%# ((DataRowView)Container.DataItem)["customerId"] %> -
6: <%# ((DataRowView)Container.DataItem)["Name"] %> <br />
7: </ItemTemplate>
8: <AlternatingItemTemplate>
9: <%# DataBinder.Eval(Container.DataItem, "customerId") %> -
10: <%# DataBinder.Eval(Container.DataItem, "Name") %> <br />
11: </AlternatingItemTemplate>
12: </asp:Repeater>
13:
14: <br><br>
15:
16: <asp:Repeater id="collectionRepeater" Runat="server">
17: <ItemTemplate>
18: <%# ((Owner)Container.DataItem).OwnerId %> -
19: <%# ((Owner)Container.DataItem).FirstName %> <



相關文章

Cloud Intelligence Leading the Digital Future

Alibaba Cloud ACtivate Online Conference, Nov. 20th & 21st, 2019 (UTC+08)

Register Now >

Starter Package

SSD Cloud server and data transfer for only $2.50 a month

Get Started >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。