Mastering ASP.Net DataBinding

上載者:User| begin:

Mastering ASP.Net DataBinding
Karl Seguin ?

Table of Contents
The Sample Program
Understanding DataItem
Nested Binding
Handling Events

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.
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>
14: <br><br>
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 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。