Momentan sunteți offline, așteptați să vă reconectați la internet

ASP.NET date obligatorii de ansamblu

IMPORTANT: Acest articol a fost tradus de software-ul de traducere automată Microsoft, si nu de un traducător. Microsoft vă oferă atât articole traduse de persoane, cât şi articole traduse automat, astfel incat aveti access la toate articolele din Baza noastră de informatii în limba dvs. materna. Totuşi, un articol tradus automat nu este întotdeauna perfect. Acesta poate conţine greşeli de vocabular, sintaxă sau gramatică, la fel cum un vorbitor străin poate face greşeli vorbind limba dvs. materna. Compania Microsoft nu este responsabilă pentru nici o inexactitate, eroare sau daună cauzată de traducerea necorespunzătoare a conţinutului sau de utilizarea traducerii necorespunzătoare de către clienţii nostri. De asemenea, Microsoft actualizează frecvent software-ul de traducere automată.

Faceți clic aici pentru a vizualiza versiunea în limba engleză a acestui articol: 307860
Acest articol se referă la următoarele Microsoft .NET Cadru biblioteca clasa spaţii de nume:
  • System.Data
  • System.Data.SqlClient
Rezumat
Acest articol oferă o introducere date ASP.NET obligatoriu.

Pentru suplimentare ASP.NET sumarele detaliate, consultaţi următoarele Articol din bază de cunoştinţe Microsoft:
305140 Foaia de parcurs ASP.NET
Informaţii suplimentare
Cu legare date ASP.NET, puteţi lega orice control server proprietăţi la simplu, colecţii, expresii şi metode. Atunci când utilizaţi date obligatorii, aveţi mai multă flexibilitate atunci când utilizaţi date dintr-o bază acoperire de date sau alte mijloace.

Acest articol adrese obligatoriu următoarele date subiecte:

Essentials de legare date

< % # %> Sintaxa

ASP.NET introduce o noua sintaxă declarativ, < % # % >. Acest lucru Sintaxa este baza pentru utilizarea datelor obligatorii într-o pagina .aspx. Toate datele obligatorii expresii trebuie să fie conţinute în aceste caractere. Următoarea listă include exemple de legare date simple din surse multiple:
  • Simplu de proprietate (sintaxa pentru un client):
    <%# custID %>					
  • Colectia (sintaxa pentru o ordine):
    <asp:ListBox id="List1" datasource='<%# myArray %>' runat="server">					
  • Expresia (sintaxa pentru o persoană de contact):
    <%# ( customer.First Name + " " + customer.LastName ) %>					
  • Metoda rezultatul (sintaxa pentru soldul neonorat):
    <%# GetBalance(custID) %>					
În exemplele precedente, inline < % # tags %> indică în cazul în care informațiile dintr-o sursă acoperire de date specifice este să fie plasate în pagina .aspx. Date obligatorii exemplul următor utilizează un control casetă text Web server:
<asp:textbox id=txt text="<%# custID %>" runat=server />				
Pentru mai multe informaţii despre sintaxa de legare date, consultaţi următoarele .NET Cadru Software Development Kit (SDK) documentaţie:

Page.DataBind() comparativ cu Control.DataBind()

După sursele acoperire de date special au fost determinate şi setaţi pentru obiecte pe pagina .aspx, trebuie să legaţi datele la aceste date surse. Puteţi utiliza metoda Control.DataBind sau Page.DataBind se leagă datele de surse acoperire de date.

Ambele metode de lucru în mod similar. Principala diferenţă este că toate sursele acoperire de date sunt obligate metoda se numeşte lor controale server după Page.DataBind . Nu există date este redat la controlul până când apel sosit explicit fie DataBind metoda de control de server Web sau până când se invoca metoda Page.DataBind nivel de pagină. De obicei, Page.DataBind (sau DataBind) este numit la Evenimentul Page_Load .

Pentru mai multe informaţii despre metoda DataBind , consultaţi documentaţia SDK de Framework .NET următoarele: Metoda Control.DataBind
http://msdn.Microsoft.com/en-us/library/w5e5992d.aspx

Controalele listă de legare acoperire de date

Controalele listă sunt server web controale speciale care pot lega pentru colectii. Puteţi utiliza aceste controale pentru a afişa rânduri acoperire de date într-o format şablon particularizat. Toate controalele listă expune sursa acoperire de date şi proprietăţi DataMember , care sunt folosite pentru a lega la colecţii.

Aceste controale pot lega lor proprietatea DataSource la orice colecţie care acceptă IEnumerable, ICollectionsau interfaţa IListSource .

Repetor de control

Repetor de control este o listă de templated, legare acoperire de date. Repetor de control este "lookless;", it does nu have orice clădire-înăuntru aspect sau stiluri. Prin urmare, vă trebuie să declare în mod explicit toate HTML aspect, formatarea şi Tag-uri stil în şabloane de control.

Următoarele mostre de cod demonstra cum se poate utiliza un control listă, repetor de control, pentru a afişa date:

Notă: trebuie să modificaţi parametrii din șirul de conexiune ca necesare pentru mediul dvs.

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>				
Pentru mai multe informaţii despre controlul repetor , consultaţi documentaţia SDK de Framework .NET următoarele:

Controlul dataList

Clasa DataList este o Listă tabel de feature-bogat, templated, legare acoperire de date. poţi modificaţi şabloane pentru a personaliza acest control. Spre deosebire de repetor de control, DataList acceptă În redare direcţionale şi opţional poate face într-un Tabel HTML la momentul execuţiei.

Pentru mai multe informaţii despre controlul DataList , consultaţi documentaţia SDK de Framework .NET următoarele:

DataGrid control

DataGrid control este un complet featured, multicoloană, legare acoperire de date grid. Pentru a Personalizaţi aspect de coloane individuale din DataGrid, puteţi seta tipul de coloană pentru a "templated" şi modifica şabloane de coloană pe. DataGrid control pot face fără template-uri, ceea ce face acest control ideal pentru scenarii de raportare. DataGrid , de asemenea, sprijină selecţie, editare, ştergere, paginare şi sortarea de coloană şi coloane de buton.

Pentru mai multe informaţii despre DataGrid control, consultaţi documentaţia SDK de Framework .NET următoarele:

Accesarea datelor

Această secțiune descrie cum se accesează date dintr-o bază acoperire de date şi leagă datele de controale listă. Puteţi utiliza setul acoperire de date sau DataReader clasa pentru a obţine date dintr-o bază acoperire de date.

Setul acoperire de date de clasă

Un set acoperire de date conţine o reprezentare completă a datelor, inclusiv tabelul structură, relaţiile dintre tabele şi ordonarea datelor. Clase de setul acoperire de date sunt suficient de flexibile pentru a stoca orice fel de informaţii de la o bază acoperire de date la un fişier de tip limbaj XML (Extensible Markup Language) (XML). Setul acoperire de date clase sunt apatride; Asta este, se poate trece aceste clase de client server fără legarea resurse de conexiune la server. Următoarele cod demonstrează cum se utilizează un DataSet se leagă datele la un control:

Notă: trebuie să modificaţi parametrii din șirul de conexiune ca necesare pentru mediul dvs.

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();				
Pentru mai multe informaţii despre clasa de setul acoperire de date , consultaţi documentaţia SDK-ul .NET Framework următoarele:

DataReader clasa

Invers, dacă trebuie doar să afişa (şi nu se schimba) datele care este de a fi prestate, o clasă de DataReader poate fi o soluţie mai bună. De exemplu, este mai bine să utilizaţi o DataReader pentru o DropDownList de control deoarece DataReader este un cursor acoperire de date forward-only. Următorul cod demonstrează cum să utilizaţi o clasă SqlDataReader se leagă datele la un control:

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();				
Pentru mai multe informaţii despre accesul SqlDataReader clasa şi date cu ASP.NET, consultaţi următoarele teme în documentaţia .NET Framework SDK:

Obligatoriu în Listă tabel de control şabloane

Puteţi utiliza şabloane în controalele listă a lega şi a Particularizați înregistrările individuale sursa acoperire de date. Această secţiune include trei metode de a face acest lucru.

Metoda DataBinder.Eval

Când sursa acoperire de date lucrează cu date care este returnat de o baza acoperire de date, sursa acoperire de date poate conţine numeroase piese de informaţii. poţi utilizaţi metoda DataBinder.Eval generice pentru a reveni acoperire de date. În următoarea mostră de cod, "au_id" câmp este întors de la sursa acoperire de date a obiectului recipient:
<%# DataBinder.Eval(Container.DataItem,"au_id") %>				
Pentru mai multe informaţii despre metoda DataBinder.Eval , consultaţi documentaţia SDK de Framework .NET următoarele:

Turnare explicite

Dacă aveţi nevoie de mai mult control, utilizaţi turnare explicite. O explicită conversie utilizează un cuvânt cheie de conversie de tip. Aceste cuvinte cheie acţiona ca funcţii, dar compilator generează inline cod. Prin urmare, executarea este uşor mai rapid decât cu o funcţie de apel sosit. Următoarele eşantioane de cod utilizaţi turnare explicită:

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] %>				
Reţineţi că precedent probe utilizarea fie un DataTable, care este un subset al unui set acoperire de date, sau DataReader ca sursă acoperire de date.

ItemDataBound eveniment

Puteţi utiliza, de asemenea, evenimentul ItemDataBound de control se leagă datele. Acest eveniment se produce atunci când un element este legat la control acoperire de date. Următoarea mostră de cod HTML defineşte un repetor de control cu un ItemTemplate:
<asp:repeater id=rptr runat=server>   <itemtemplate>      <asp:label id=lblAuthorID runat=server />   </itemtemplate></asp:repeater>				
Următoarele metode sunt necesare în pagina dvs.:

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

Avertisment: acest articol a fost tradus automat

Proprietăți

ID articol: 307860 - Ultima examinare: 10/15/2012 03:19:00 - Revizie: 1.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 KbMtro
Feedback