ASP.NET огляд Прив'язування даних

Переклади статей Переклади статей
Номер статті: 307860 - Показ продуктів, яких стосується ця стаття.
Ця стаття відноситься до наступних Microsoft .NET Рамках клас бібліотечного простору імен:
  • System.Data
  • System.Data.SqlClient
Розгорнути все | Згорнути все

На цій сторінці

Підсумки

Ця стаття являє собою введення в ASP.NET даних прив'язування.

Додаткові огляди ASP.NET див нижче Статті бази знань Microsoft Knowledge Base:
305140 ASP.NET дорожньої карти

Додаткові відомості

З ASP.NET прив'язки даних, можна прив'язати будь-який сервер керування для простих властивостей, колекцій, вирази та методи. Під Вільний час сценарій виконання Прив'язування даних, у вас є більше гнучкості при використанні даних з бази даних або інші засоби.

У цій статті розглядаються такі прив'язки даних тем:

Essentials Прив'язування даних

< % # %> Синтаксис

ASP.NET вводить новий декларативні синтаксис, < % # % >. Це синтаксис є основою для сценарій виконання прив'язки даних в. aspx-сторінки. Всі Прив'язування даних Ці символи повинні міститися виразів. У цьому списку містить приклади прив'язування прості дані з різних джерел:
  • Простий власності (синтаксис для клієнта):
    <%# custID %>
    					
  • Колекція (синтаксис для замовлення):
    <asp:ListBox id="List1" datasource='<%# myArray %>' runat="server">
    					
  • Вираз (синтаксис для контакту):
    <%# ( customer.First Name + " " + customer.LastName ) %>
    					
  • Метод результат (синтаксис для непогашений залишок):
    <%# GetBalance(custID) %>
    					
У попередньому Прикладами вбудованих < % # %> Теги користувачів вказати, де відомостей із джерела даних повинні бути поміщені в . aspx сторінки. У наведеному нижче прикладі Прив'язування даних використовує сервер управління TextBox Web:
<asp:textbox id=txt text="<%# custID %>" runat=server />
				
Для отримання додаткових відомостей про синтаксис Прив'язування даних перегляньте наступні .NET Документації рамках Kit розробки програмного забезпечення (SDK):
Синтаксис виразу Прив'язування даних
http://msdn2.Microsoft.com/EN-US/Library/bda9bbfx (vs.71). aspx

Page.DataBind() проти Control.DataBind()

Після певного даних джерела були визначені і встановити для об'єктів на сторінці. aspx спочатку необхідно зв'язати дані до цих даних джерел. Page.DataBind або Control.DataBind метод можна використовувати для зв'язування даних із джерелами даних.

Обидва методи працюють точно так само. Основна відмінність полягає в тому, обов'язково всі джерела даних щоб їх елементів керування сервером після Page.DataBind метод називається. Дані не надані до елемента керування, доки явно викликати у будь-якому DataBind метод сервер веб-елемент керування, або поки ви посилатися на метод Page.DataBind рівні сторінки. Як правило, Page.DataBind (або DataBind) називають за Page_Load подія.

Щоб отримати додаткові відомості про метод DataBind див нижче .NET Framework SDK: Control.DataBind метод
http://MSDN.Microsoft.com/EN-US/Library/w5e5992d.aspx

Список даних пов’язані елементи керування

номенклатура керування є спеціальна елементів керування сервера, який можна прив'язати до колекції. За допомогою цих елементів керування для відображення рядків даних у в Формат настроюваного шаблону. Всі елементи списку викрити DataSource і DataMember властивості, які використовуються для приєднання до колекції.

Ці елементи керування можна прив'язати їх властивості DataSource для будь-якої колекції, яка підтримує інтерфейс IEnumerable, ICollectionабо IListSource інтерфейс.

Керування повторювач

Повторювач контроль є шаблонної, пов'язані дані списку. Повторювач контроль є "lookless"; тобто він має будь-які вбудовані макет або стилі. Таким чином, необхідно явно оголосити всі HTML розмітки форматування та стиль Мітки в елемент керування шаблони.

Нижче зразки коду продемонструвати, як використовувати один список контролю, управління повторювач , для відображення даних:

Примітка: ви повинні змінити параметри рядка підключення як необхідні для вашого середовища.

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>
				
Візуальний 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>
				
Щоб отримати додаткові відомості про керування повторювач див нижче .NET Framework SDK:
Керування сервер ретранслятора веб
http://MSDN.Microsoft.com/EN-US/Library/x8f2zez5.aspx

Керування dataList

Клас DataList є особливістю багатих, шаблонних, пов'язані дані списку. Ти можеш змінити шаблонів, щоб настроїти цей елемент керування. На відміну від керування повторювачDataList підтримує спрямованого рендеринга і за потреби можна надати у в HTML-таблиці під Вільний час виконання.

Для отримання додаткових відомостей про керування DataList див наступні .NET Framework SDK:
DataList сервер керування веб-сторінок
http://MSDN.Microsoft.com/EN-US/Library/9cx2f3ks (VS.85). aspx

Дата Грід контролю

Дата Грід контроль є повнофункціональним, із кількома стовпцями, пов'язані дані сітки. Щоб Настроювання динамічний макет окремих стовпців Дата Грід, ви можете встановити тип впорядкована стопка карт з чергуванням кольорів на "шаблонної" і змінити на шаблони впорядкована стопка карт з чергуванням кольорів. Дата Грід контролю може надати без шаблонів, що робить цей елемент керування ідеально підходить для звітах. Дата Грід також підтримує виділення, редагування, видалення, пейджинговий і сортування стовпець і кнопку стовпці.

Щоб отримати додаткові відомості про керування Дата Грід див нижче .NET Framework SDK:
Керування Дата Грід веб-сервера
http://MSDN.Microsoft.com/EN-US/Library/aa710742 (VS.71). aspx

Доступ до даних

У цьому розділі описано, як доступ до даних з бази даних і зв'язати дані списку елементів керування. Використайте набір даних або DataReader клас для отримання даних із бази даних.

Клас набору даних

Набір даних містить повне представлення даних, включаючи таблиці Структура, зв'язки між таблицями й впорядкування даних. Набір даних класів є достатньо гнучкою, щоб зберігати будь-яку інформацію від базу даних на файл мови XML (Extensible Markup). Набір даних класів є без громадянства; тобто, ви можете передати ці класи від Клієнт сервера без прив'язки до ресурсів підключення до сервера. Нижче код демонструє, як використовувати набір даних для прив'язки даних елемента керування:

Примітка: ви повинні змінити параметри рядка підключення як необхідні для вашого середовища.

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 = ds
MyRepeater.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(); 
				
Візуальний 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();
				
Щоб отримати додаткові відомості про клас набору даних див нижче .NET Framework SDK:
Клас набору даних
http://msdn2.Microsoft.com/EN-US/Library/System.Data.DataSet (vs.71). aspx

DataReader клас

І навпаки, якщо вам потрібно лише відображення (і не змінювати) даних Щоб відтворити, DataReader класу можуть бути кращим рішенням. Наприклад, це краще використовувати DataReaderDropDownList контролювати, оскільки DataReader курсор вперед тільки дані. Наступний код показує як використовувати модуля класу для прив'язки даних елемента керування:

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();
				
Візуальний 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();
				
Щоб отримати додаткові відомості про модуля класу і даних access з ASP.NET перегляньте такі розділи в .NET Framework SDK документації:
Модуля класу
http://MSDN.Microsoft.com/EN-US/Library/System.Data.sqlclient.SqlDataReader.aspx

Розробка підвищеного ASP.NET
http://msdn2.Microsoft.com/EN-US/Library/5dws599a (vs.71). aspx

Прив'язування у список контролю шаблони

Можна використовувати шаблони у списку елементів керування для прив'язки і до Настроювання окремих записів джерела даних. Цей розділ включає в себе три методи для цього.

DataBinder.Eval метод

Коли джерело даних працює з даних, які повертаються з на бази даних, джерела даних може містити численні частини інформації. Ти можеш використовувати загальний метод DataBinder.Eval , щоб повернути дані. У наведений нижче зразок коду, "au_id" Поле повернувся з контейнера об'єкта, джерело даних:
<%# DataBinder.Eval(Container.DataItem,"au_id") %>
				
Щоб отримати додаткові відомості про метод DataBinder.Eval див нижче .NET Framework SDK:
DataBinder.Eval метод
http://MSDN.Microsoft.com/EN-US/Library/4hx47hfe.aspx

Явні лиття

Якщо вам потрібно більше контролю, використовувати явний лиття. Це явне перетворення використовує ключове слово перетворення типу. Ці ключові слова діяти як функції, але компілятор генерує код inline. Тому виконання є трохи швидше ніж з функцією виклику. Наступні приклади коду використовувати явний лиття:

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] %>
				
Візуальний 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] %>
				
Зверніть увагу, що попередній семпли сценарій виконання або DataTable, який є підмножиною набору даних, або DataReader , як джерело даних.

ItemDataBound подію

Також, за допомогою ItemDataBound подія контролю для зв'язування даних. Ця подія відбувається, коли є елемент-це дані, прив'язані до елемента керування. Нижченаведений зразок коду HTML визначає повторювач керування з ItemTemplate:
<asp:repeater id=rptr runat=server>
   <itemtemplate>
      <asp:label id=lblAuthorID runat=server />
   </itemtemplate>
</asp:repeater>
				
Наступні методи необхідні у вашу сторінку:

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 Sub

public 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 If
End 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();
   }
}
				
Візуальний 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()));
            }
}
				

Властивості

Номер статті: 307860 - Востаннє переглянуто: 15 жовтня 2012 р. - Редакція: 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 KbMtuk
Машинний переклад
УВАГА! Цю статтю переклала програма машинного перекладу Microsoft, а не людина. Корпорація Microsoft пропонує вам як машинні переклади, так і переклади фахівців, щоб Ви мали доступ до всіх статей бази знань рідною мовою. Проте стаття, яку переклав комп’ютер, не завжди бездоганна. Вона може містити лексичні, синтаксичні або граматичні помилки. Так само помиляється іноземець, спілкуючись вашою рідною мовою. Корпорація Microsoft не несе відповідальність за жодні неточності, помилки або шкоду, завдану неправильним перекладом змісту або його використанням з боку користувачів. Крім того, корпорація Microsoft часто оновлює програму машинного перекладу.
Клацніть тут, щоб переглянути цю статтю англійською мовою: 307860

Надіслати відгук

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com