Bạn hiện đang ngoại tuyến, hãy chờ internet để kết nối lại

ASP.NET dữ liệu giới hạn trên Tổng quan

QUAN TRỌNG: Bài viết này được dịch bằng phần mềm dịch máy của Microsoft chứ không phải do con người dịch. Microsoft cung cấp các bài viết do con người dịch và cả các bài viết do máy dịch để bạn có thể truy cập vào tất cả các bài viết trong Cơ sở Kiến thức của chúng tôi bằng ngôn ngữ của bạn. Tuy nhiên, bài viết do máy dịch không phải lúc nào cũng hoàn hảo. Loại bài viết này có thể chứa các sai sót về từ vựng, cú pháp hoặc ngữ pháp, giống như một người nước ngoài có thể mắc sai sót khi nói ngôn ngữ của bạn. Microsoft không chịu trách nhiệm về bất kỳ sự thiếu chính xác, sai sót hoặc thiệt hại nào do việc dịch sai nội dung hoặc do hoạt động sử dụng của khách hàng gây ra. Microsoft cũng thường xuyên cập nhật phần mềm dịch máy này.

Nhấp chuột vào đây để xem bản tiếng Anh của bài viết này: 307860
Bài viết này đề cập đến Microsoft .NET sau Không gian tên thư viện lớp khuôn khổ:
  • System.Data
  • System.Data.SqlClient
Tóm tắt
Bài viết này cung cấp một giới thiệu về dữ liệu ASP.NET giới hạn trên.

Cho thêm ASP.NET overviews, hãy xem mục sau Bài viết cơ sở kiến thức Microsoft:
305140 Lộ trình ASP.NET
Thông tin thêm
Với ASP.NET dữ liệu giới hạn trên, bạn có thể giới hạn trên bất kỳ điều khiển máy chủ để đơn giản tài sản, bộ sưu tập, biểu thức và phương pháp. Khi bạn sử dụng dữ liệu giới hạn trên, bạn có sự linh hoạt hơn khi bạn sử dụng các dữ liệu từ bộ máy cơ sở dữ liệu hoặc Các phương tiện khác.

Bài viết này địa chỉ các giới hạn trên sau dữ liệu chủ đề:

Dữ liệu giới hạn trên essentials

< % # %> Cú pháp

ASP.NET giới thiệu một cú pháp mới hỏa, < % # % >. Điều này cú pháp là cơ sở cho việc sử dụng dữ liệu giới hạn trên trong một trang .aspx. Tất cả dữ liệu giới hạn trên biểu thức phải được chứa trong các kí tự đại diện. Danh sách sau đây bao gồm các ví dụ của dữ liệu đơn giản giới hạn trên từ nhiều nguồn khác nhau:
  • Bất động sản đơn giản (cú pháp cho một khách hàng):
    <%# custID %>					
  • Bộ sưu tập (cú pháp cho một đơn đặt hàng):
    <asp:ListBox id="List1" datasource='<%# myArray %>' runat="server">					
  • Biểu hiện (cú pháp cho một số liên lạc):
    <%# ( customer.First Name + " " + customer.LastName ) %>					
  • Phương pháp các kết quả (cú pháp cho sự cân bằng xuất sắc):
    <%# GetBalance(custID) %>					
Trong ví dụ trước, inline < % # %> tags chỉ ra nơi các thông tin từ một nguồn cụ thể dữ liệu là để được đặt trong Trang .aspx. Ví dụ sau liên kết dữ liệu sử dụng một điều khiển hộp máy chủ Web:
<asp:textbox id=txt text="<%# custID %>" runat=server />				
Để biết thêm chi tiết về dữ liệu giới hạn trên cú pháp, xem sau .NET Khuôn khổ Kit phát triển phần mềm (SDK) tài liệu:
Dữ liệu giới hạn trên biểu hiện cú pháp
.aspx http://msdn2.Microsoft.com/en-US/Library/bda9bbfx (vs.71)

Page.DataBind() so với Control.DataBind()

Sau khi các nguồn dữ liệu cụ thể đã được xác định và thiết lập cho các đối tượng trong .aspx trang, bạn phải liên kết dữ liệu với những dữ liệu này nguồn. Bạn có thể sử dụng các Page.DataBind hoặc phương pháp Control.DataBind liên kết dữ liệu với các nguồn dữ liệu.

Cả hai phương pháp làm việc tương tự. Sự khác biệt chính là rằng tất cả các nguồn dữ liệu bị giới hạn trên để điều khiển máy chủ của họ sau khi Page.DataBind phương pháp được gọi là. Không có dữ liệu được trả lại để kiểm soát cho đến khi bạn rõ ràng gọi phương pháp DataBind hoặc kiểm soát Máy chủ Web hoặc cho đến khi bạn gọi các Các phương pháp Page.DataBind cấp trang. Thông thường, các Page.DataBind (hoặc DataBind) được gọi là từ các Page_Load sự kiện.

Để biết thêm chi tiết về phương pháp DataBind , xem tài liệu Khuôn khổ .NET SDK sau đây: Phương pháp Control.DataBind
http://MSDN.Microsoft.com/en-US/Library/w5e5992d.aspx

Danh sách giới hạn trên dữ liệu điều khiển

Các danh sách điều khiển là đặc biệt điều khiển Máy chủ Web có thể giới hạn trên bộ sưu tập. Bạn có thể sử dụng các điều khiển để hiển thị các hàng dữ liệu trong một định dạng tùy chỉnh mẫu. Tất cả danh sách điều khiển tiếp xúc với DataSource và các tính chất DataMember , được sử dụng để liên kết với các bộ sưu tập.

Các điều khiển có thể giới hạn trên DataSource tài sản của họ vào bất kỳ bộ sưu tập hỗ trợ IEnumerable, ICollection, hoặc giao diện IListSource .

Lặp lại điều khiển

Kiểm soát Repeater là một danh sách giao, dữ liệu giới hạn trên. Kiểm soát lặp lại là "lookless;" có nghĩa là, nó không có bất kỳ được xây dựng trong bố trí hoặc phong cách. Vì vậy, bạn phải rõ ràng tuyên bố tất cả HTML bố trí, định dạng, và phong cách thẻ trong điều khiển mẫu.

Sau đây mã mẫu chứng minh làm thế nào bạn có thể sử dụng một điều khiển danh sách, kiểm soát dân số lặp lại để hiển thị dữ liệu:

Lưu ý: bạn phải thay đổi các tham số của chuỗi kết nối như cần thiết cho môi trường của bạn.

Visual Basic .NET
<%@ Page Language="vb" %><%@ Import Namespace="System.Data" %><%@ Import Namespace="System.Data.SqlClient" %><script runat="server">Sub Page_Load(sender As Object, e As EventArgs)   Dim cnn As SqlConnection = New SqlConnection("server=(local);" & _                                                "database=pubs;Integrated Security=SSPI")   Dim cmd As SqlDataAdapter = New SqlDataAdapter("select * from authors", cnn)   Dim ds As DataSet = New DataSet()   cmd.Fill(ds)   Repeater1.DataSource = ds   Repeater1.DataBind()End Sub</script><html><body>   <form id="Form1" method="post" runat="server">      <asp:Repeater id="Repeater1" runat="server">         <ItemTemplate>         <%# DataBinder.Eval(Container.DataItem,"au_id") %><br>	 </ItemTemplate>      </asp:Repeater>   </form></body></html>				
Visual C# .NET
<%@ Page language="c#" %><%@ Import Namespace="System.Data" %><%@ Import Namespace="System.Data.SqlClient" %><script runat="server">void Page_Load(Object sender, EventArgs e) {    SqlConnection cnn = new        SqlConnection("server=(local);database=pubs;Integrated Security=SSPI");    SqlDataAdapter da = new SqlDataAdapter("select * from authors", cnn);    DataSet ds = new DataSet();    da.Fill(ds, "authors");    Repeater1.DataSource = ds.Tables["authors"];   Repeater1.DataBind();}</script><html><body>   <form id="WebForm2" method="post" runat="server">      <asp:Repeater id="Repeater1" runat="server">         <ItemTemplate>         <%# DataBinder.Eval(Container.DataItem,"au_id") %><br>    	 </ItemTemplate>      </asp:Repeater>   </form></body></html>				
Visual J# .NET
<%@ Page language="VJ#" %><%@ Import Namespace="System.Data" %><%@ Import Namespace="System.Data.SqlClient" %> <script runat="server">void Page_Load(Object sender, EventArgs e) {     SqlConnection cnn = new SqlConnection("server=(local);database=pubs;Integrated         Security=SSPI");     SqlDataAdapter da = new SqlDataAdapter("select * from authors", cnn);     DataSet ds = new DataSet();     da.Fill(ds, "authors");     DataTableCollection dtc = ds.get_Tables();    int index = dtc.IndexOf("authors");    Repeater1.set_DataSource(dtc.get_Item(index));    Repeater1.DataBind();}</script><html><body>   <form id="WebForm2" method="post" runat="server">      <asp:Repeater id="Repeater1" runat="server">         <ItemTemplate>         <%# DataBinder.Eval(Container.DataItem,"au_id") %><br>             </ItemTemplate>      </asp:Repeater>   </form></body></html>				
Để biết thêm chi tiết về kiểm soát lặp lại , hãy xem tài liệu Khuôn khổ .NET SDK sau đây:
Lặp lại điều khiển Máy chủ Web
http://MSDN.Microsoft.com/en-US/Library/x8f2zez5.aspx

Kiểm soát dataList

Các lớp học DataList là một danh sách tính năng phong phú, giao, dữ liệu giới hạn trên. Bạn có thể Sửa đổi các mẫu để tùy chỉnh các điều khiển này. Không giống như kiểm soát Repeater , DataList hỗ trợ thể hiện hướng và có thể tùy chọn Hiển thị trong một HTML bảng tại thời gian chạy.

Để biết thêm chi tiết về kiểm soát DataList , xem tài liệu Khuôn khổ .NET SDK sau đây:
Điều khiển Máy chủ Web của dataList
.aspx http://MSDN.Microsoft.com/en-US/Library/9cx2f3ks (VS.85)

Điều khiển DataGrid

Điều khiển DataGrid là một mạng lưới đầy đủ tính năng, multicolumn, dữ liệu giới hạn trên. Để tùy chỉnh bố trí của từng cột trong DataGrid, bạn có thể thiết lập các loại cột để "giao" và sửa đổi các cột của mẫu. Điều khiển DataGrid có thể khiến mà không có mẫu, mà làm cho các điều khiển này lý tưởng để báo cáo các tình huống. DataGrid cũng hỗ trợ lựa chọn, chỉnh sửa, xóa, phân trang, và phân loại bởi cột và nút chọn một cột.

Để biết thêm chi tiết về điều khiển DataGrid , xem tài liệu Khuôn khổ .NET SDK sau đây:

Truy cập vào dữ liệu

Phần này mô tả làm thế nào để truy cập dữ liệu từ bộ máy cơ sở dữ liệu và liên kết dữ liệu với các danh sách điều khiển. Bạn có thể sử dụng số liệu hoặc DataReader lớp để có được dữ liệu từ bộ máy cơ sở dữ liệu.

Số liệu lớp

Một bộ dữ liệu có chứa một đại diện đầy đủ của dữ liệu, bao gồm cả bảng cấu trúc, các mối quan hệ giữa các bảng, và đặt hàng của dữ liệu. Số liệu lớp được linh hoạt, đủ để lưu trữ bất kỳ hình thức nào của các thông tin từ bộ máy cơ sở dữ liệu vào một tập tin mở rộng đánh dấu kiểm ngôn ngữ (XML). Số liệu lớp được quốc tịch; đó là, bạn có thể vượt qua các lớp học từ khách hàng đến các máy chủ mà không có giới hạn trên lên máy chủ kết nối tài nguyên. Sau đây Mã chứng tỏ làm thế nào để sử dụng một số liệu để liên kết dữ liệu với một điều khiển:

Lưu ý: bạn phải thay đổi các tham số của chuỗi kết nối như cần thiết cho môi trường của bạn.

Visual Basic .NET
Dim cnn As SqlConnection = New SqlConnection("server=(local);" & _                                             "database=pubs;Integrated Security=SSPI")Dim cmd As SqlDataAdapter = New SqlDataAdapter("select * from authors", cnn)Dim ds As DataSet = New DataSet()cmd.Fill(ds)MyRepeater.DataSource = dsMyRepeater.DataBind() 				
Visual C# .NET
SqlConnection cnn = new SqlConnection("server=(local);                                       database=pubs;Integrated Security=SSPI"); SqlDataAdapter da = new SqlDataAdapter("select * from authors", cnn); DataSet ds = new DataSet(); da.Fill(ds);MyRepeater.DataSource = ds;MyRepeater.DataBind(); 				
Visual J# .NET
SqlConnection cnn = new SqlConnection("server=(local);                                       database=pubs;Integrated Security=SSPI"); SqlDataAdapter da = new SqlDataAdapter("select * from authors", cnn); DataSet ds = new DataSet(); da.Fill(ds); MyRepeater.set_DataSource(ds);MyRepeater.DataBind();				
Để biết thêm chi tiết về các class bộ dữ liệu , hãy xem tài liệu Khuôn khổ .NET SDK sau đây:

DataReader lớp

Ngược lại, nếu bạn chỉ cần để hiển thị (và không thay đổi) dữ liệu đó là để được trả lại, một lớp học DataReader có thể là một giải pháp tốt hơn. Ví dụ, nó là tốt hơn để sử dụng một DataReader cho một DropDownList kiểm soát vì DataReader là một con trỏ về phía trước chỉ dữ liệu. Mã sau đây chứng minh làm thế nào để sử dụng một SqlDataReader lớp liên kết dữ liệu với một điều khiển:

Visual Basic .NET
Dim cnn As SqlConnection = New SqlConnection("server=(local);" & _                                             "database=pubs;Integrated Security=SSPI")Dim cmd As SqlCommand = New SqlCommand("select * from authors", cnn)cnn.Open()MyRepeater.DataSource = cmd.ExecuteReader(CommandBehavior.CloseConnection)MyRepeater.DataBind()				
Visual C# .NET
SqlConnection cnn = new SqlConnection("server=(local);                                       database=pubs;Integrated Security=SSPI");SqlCommand cmd = new SqlCommand("select * from authors", cnn);cnn.Open();MyRepeater.DataSource = cmd.ExecuteReader(CommandBehavior.CloseConnection);MyRepeater.DataBind();				
Visual J# .NET
SqlConnection cnn = new SqlConnection("server=(local);                                       database=pubs;Integrated Security=SSPI"); SqlCommand cmd = new SqlCommand("select * from authors", cnn); cnn.Open();MyRepeater.set_DataSource(cmd.ExecuteReader(CommandBehavior.CloseConnection));MyRepeater.DataBind();				
Để biết thêm chi tiết về SqlDataReader lớp và các dữ liệu truy cập với ASP.NET, xem các chủ đề sau trong Khuôn khổ .NET SDK tài liệu:

giới hạn trên trong danh sách điều khiển mẫu

Bạn có thể sử dụng các mẫu trong danh sách điều khiển để giới hạn trên và tuỳ chỉnh các hồ sơ cá nhân của nguồn dữ liệu. Phần này bao gồm ba phương pháp để làm điều này.

Phương pháp DataBinder.Eval

Khi các nguồn dữ liệu làm việc với dữ liệu được trả lại từ một bộ máy cơ sở dữ liệu, các nguồn dữ liệu có thể chứa nhiều mẩu thông tin. Bạn có thể sử dụng các phương pháp DataBinder.Eval chung để trả lại dữ liệu. Trong mẫu mã sau đây, "au_id" lĩnh vực trở lại từ các nguồn dữ liệu của các đối tượng container:
<%# DataBinder.Eval(Container.DataItem,"au_id") %>				
Để biết thêm chi tiết về phương pháp DataBinder.Eval , xem tài liệu Khuôn khổ .NET SDK sau đây:

Rõ ràng đúc

Nếu bạn cần kiểm soát nhiều hơn, sử dụng rõ ràng đúc. Một rõ ràng chuyển đổi sử dụng một loại chuyển đổi từ khóa. Các từ khóa này hoạt động như chức năng, nhưng trình biên dịch tạo ra mã nội tuyến. Vì vậy, thực hiện là hơi nhanh hơn hơn với một chức năng gọi. Các mẫu mã sau đây sử dụng rõ ràng đúc:

Visual Basic .NET
' DataTable as the DataSource<%# CType(Container.DataItem, System.Data.DataRowView)("au_id") %>' DataReader as the DataSource<%# CType(Container.DataItem, System.Data.Common.DbDataRecord)("au_id") %>' DataReader as the DataSource<%# CType(Container.DataItem, System.Data.Common.DbDataRecord)(0) %>				
Visual C# .NET
// DataTable as the DataSource<%# ((System.Data.DataRowView)Container.DataItem)["au_id"] %> // DataReader as the DataSource<%# ((System.Data.Common.DbDataRecord)Container.DataItem)["au_id"] %>// DataReader as the DataSource<%# ((System.Data.Common.DbDataRecord)Container.DataItem)[0] %>				
Visual J# .NET
// DataTable as the DataSource<%# ((System.Data.DataRowView)Container.DataItem)["au_id"] %> // DataReader as the DataSource<%# ((System.Data.Common.DbDataRecord)Container.DataItem)["au_id"] %>// DataReader as the DataSource<%# ((System.Data.Common.DbDataRecord)Container.DataItem)[0] %>				
Lưu ý rằng ngay trước các mẫu sử dụng hoặc một DataTable, mà là một tập hợp con của một tập dữ liệu, hoặc các DataReader là một nguồn dữ liệu.

Sự kiện ItemDataBound

Bạn cũng có thể sử dụng các sự kiện ItemDataBound của sự kiểm soát liên kết dữ liệu. Sự kiện này xảy ra khi một mục là giới hạn trên để kiểm soát dữ liệu. Mẫu mã HTML sau đây xác định một điều khiển lặp lại với một ItemTemplate:
<asp:repeater id=rptr runat=server>   <itemtemplate>      <asp:label id=lblAuthorID runat=server />   </itemtemplate></asp:repeater>				
Các phương pháp sau đây được yêu cầu trong trang của bạn:

Visual Basic .NET
public Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)     'TODO: Retrieve data from a database,   'and bind the data to a list control.End Subpublic Sub rptr_OnItemDataBound(ByVal sender As Object, _ByVal e As System.Web.UI.WebControls.RepeaterItemEventArgs) Handles rptr.ItemDataBound   Dim rec As DataRowView   rec = e.Item.DataItem   'Make sure that you have the data.   If Not IsDBNull(rec) Then      Dim l1 As Label      l1 = e.Item.FindControl("lblAuthorID")      l1.Text = rec("au_id").ToString()   End IfEnd Sub				
Visual C# .NET
public void Page_Init(object sender, System.EventArgs e){   rptr.ItemDataBound += new RepeaterItemEventHandler(rptr_OnItemDataBound);}public void Page_Load(object sender, System.EventArgs e){   // TODO: Retrieve data from a database,   // and bind the data to a list control.}public void rptr_OnItemDataBound(object sender, RepeaterItemEventArgs e){   System.Data.Common.DbDataRecord rec = (System.Data.Common.DbDataRecord)                                          e.Item.DataItem;   if(rec!=null) //Make sure that you have the data.   {      Label l1 = (Label)e.Item.FindControl("lblAuthorID");      l1.Text = rec["au_id"].ToString();   }}				
Visual J# .NET
public void Page_Init(Object sender, System.EventArgs e){            rptr.add_ItemDataBound(new RepeaterItemEventHandler(rptr_OnItemDataBound));}private void Page_Load(Object sender, System.EventArgs e){            // TODO: Retrieve data from a database,            // and bind the data to a list control.}public void rptr_OnItemDataBound(Object sender, RepeaterItemEventArgs e){            System.Data.Common.DbDataRecord rec = (System.Data.Common.DbDataRecord)                                                   e.get_Item().get_DataItem();            if (rec != null) //Make sure that you have the data.            {                        Label l1 = (Label)e.get_Item().FindControl("lblAuthorID");                        l1.set_Text(((rec.get_Item("au_id")).ToString()));            }}				
databinding databound

Cảnh báo: Bài viết này được dịch tự động

Thuộc tính

ID Bài viết: 307860 - Xem lại Lần cuối: 10/15/2012 03:23:00 - Bản sửa đổi: 3.0

Microsoft ASP.NET 1.0, Microsoft Visual Basic .NET 2002 Standard Edition, Microsoft Visual C# .NET 2002 Standard Edition, Microsoft Visual J# .NET 2003 Standard Edition, Microsoft ASP.NET 1.1, Microsoft Visual Basic .NET 2003 Standard Edition, Microsoft Visual C# .NET 2003 Standard Edition

  • kbarttyperoadmap kbdatabinding kbinfo kbservercontrols kbmt KB307860 KbMtvi
Phản hồi