أنت غير متصل حاليًا، وفي انتظار الإنترنت الخاص بك ليقوم بإعادة الاتصال

نظرة عامة حول ربط بيانات ASP.NET

هام: تمت ترجمة هذا المقال باستخدام برنامج ترجمة آلية لشركة مايكروسوفت بدلاً من الاستعانة بمترجم بشري. تقدم شركة مايكروسوفت كلاً من المقالات المترجمة بواسطة المترجمين البشر والمقالات المترجمة آليًا وبالتالي ستتمكن من الوصول إلى كل المقالات الموجودة في قاعدة المعرفة الخاصة بنا وباللغة الخاصة بك. بالرغم من ذلك، فإن المقالة المترجمة آليًا لا تكون دقيقة دائمًا وقد تحتوي على أخطاء إملائية أو لغوية أو نحوية، مثل تلك الأخطاء الصادرة عن متحدث أجنبي عندما يتحدث بلغتك. لا تتحمل شركة مايكروسوفت مسئولية عدم الدقة أو الأخطاء أو الضرر الناتج عن أية أخطاء في ترجمة المحتوى أو استخدامه من قبل عملائنا. تعمل شركة مايكروسوفت باستمرار على ترقية برنامج الترجمة الآلية

اضغط هنا لرابط المقالة باللغة الانجليزية307860
تشير هذه المقالة إلى Microsoft.NET التالية مكتبة الفئات إطار مساحات الأسماء:
  • System.Data
  • System.Data.SqlClient
الموجز
توفر هذه المقالة مقدمة إلى بيانات ASP.NET الربط.

للحصول على نظرات عامة ASP.NET إضافية، راجع ما يلي مقالة قاعدة معارف Microsoft:
305140 خارطة الطريق ASP.NET
معلومات أخرى
مع ربط بيانات ASP.NET، يمكنك ربط أي عنصر تحكم خادم لخصائص بسيطة أو مجموعات أو التعبيرات أو أساليب. عند استخدام ربط البيانات، لديك مرونة أكبر عند استخدام البيانات من قاعدة بيانات أو وسائل أخرى.

تحتوي هذه المقالة يعالج ربط البيانات التالية المواضيع:

أساسيات ربط البيانات

< % # %> بناء الجملة

يقدم ASP.NET على بناء الجملة التعريفي الجديد، < % # % >. هذا بناء الجملة هو الأساس لاستخدام ربط البيانات في صفحة.aspx. كافة ربط البيانات يجب تضمين التعبيرات داخل هذه الأحرف. القائمة التالية تتضمن أمثلة من ربط بيانات بسيطة من مصادر متعددة:
  • الخاصية البسيطة (بناء الجملة لأحد العملاء):
    <%# custID %>					
  • مجموعة (بناء الجملة لأمر):
    <asp:ListBox id="List1" datasource='<%# myArray %>' runat="server">					
  • التعبير (بناء الجملة لجهة اتصال):
    <%# ( customer.First Name + " " + customer.LastName ) %>					
  • نتيجة أسلوب (بناء الجملة للرصيد المستحق):
    <%# GetBalance(custID) %>					
في الأمثلة السابقة، المضمن < % # %> العلامات الإشارة إلى فيها المعلومات من مصدر بيانات محدد لوضعها في صفحة.aspx. يستخدم المثال التالي ربط بيانات عنصر تحكم خادم ويب TextBox :
<asp:textbox id=txt text="<%# custID %>" runat=server />				
للحصول على مزيد من المعلومات حول بناء الجملة لربط البيانات، راجع.NET التالية إطار وثائق مجموعة أدوات تطوير برامج (SDK):
بناء جملة تعبير ربط البيانات
.aspx http://msdn2.microsoft.com/en-us/library/bda9bbfx (vs.71)

Page.DataBind() مقابل Control.DataBind()

بعد تحديد مصادر البيانات معينة وتعيين للكائنات الموجودة في صفحة.aspx، يجب ربط البيانات بهذه البيانات مصادر. يمكنك استخدام الأسلوب Control.DataBind أو Page.DataBind لربط البيانات إلى مصادر البيانات.

كلاهما أساليب العمل وبنفس الطريقة. الاختلاف الأساسي أن يتم ربط كافة مصادر البيانات عناصر تحكم الخادم بعد Page.DataBind يتم استدعاء الأسلوب. يتم تقديم أية بيانات إلى عنصر التحكم حتى تقوم استدعاء أما الأسلوب DataBind عنصر تحكم خادم الويب أو حتى تقوم باستدعاء بشكل صريح أسلوب Page.DataBind مستوى الصفحة. بشكل عام، يتم استدعاء Page.DataBind (أو DataBind) من حدث Page_Load .

لمزيد من المعلومات حول أسلوب DataBind ، راجع وثائق SDK إطار عمل.NET التالية: أسلوب Control.DataBind
http://msdn.microsoft.com/en-us/library/w5e5992d.aspx

عناصر تحكم القائمة ربط البيانات

تكون عناصر تحكم القائمة خاص عناصر تحكم خادم الويب الذي يمكن ربطه إلى مجموعات. يمكنك استخدام عناصر التحكم هذه لعرض صفوف من البيانات في تنسيق القالب المخصص. يعرض كافة عناصر تحكم القائمة مصدر البيانات وخصائص DataMember ، التي تستخدم للربط إلى مجموعات.

ربط عناصر التحكم هذه خاصية مصدر البيانات الخاصة بهم إلى أي مجموعة التي تدعم IEnumerableأو ICollectionواجهة إيليستسورسي .

عنصر التحكم repeater

عنصر التحكم Repeater قائمة القوالب، ربط البيانات. عنصر التحكم Repeater "لوكلس"؛ أي أنه ليس لديه أي مضمن التخطيط أو الأنماط. لذلك، يجب أن بوضوح تعريف كافة تخطيط HTML، التنسيق، ونمط العلامات في قوالب عنصر التحكم.

ما يلي عرض نماذج التعليمات البرمجية كيفية استخدام عنصر تحكم قائمة واحد، عنصر التحكم Repeater ، لعرض البيانات:

ملاحظة: يجب تعديل معلمات سلسلة الاتصال ك الضرورية للبيئة الخاصة بك.

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>				
لمزيد من المعلومات حول عنصر التحكم Repeater ، راجع وثائق SDK إطار عمل.NET التالية:
عنصر تحكم خادم الويب repeater
http://msdn.microsoft.com/en-us/library/x8f2zez5.aspx

عنصر التحكم

فئة قائمة البيانات قائمة الميزة الغنية، القوالب، ربط البيانات. يمكنك القيام بما تعديل القوالب لتخصيص عنصر التحكم هذا. بعكس عنصر التحكم Repeater ، DataList يعتمد عرض اتجاهات ويمكن أن تجعل بشكل اختياري في جدول HTML في وقت التشغيل.

لمزيد من المعلومات حول عنصر التحكم، راجع وثائق SDK إطار عمل.NET التالية:
عنصر تحكم خادم الويب dataList
.aspx http://msdn.microsoft.com/en-us/library/9cx2f3ks (VS.85)

عنصر تحكم DataGrid

عنصر التحكم DataGrid شبكة كاملة المزايا، متعدد الأعمدة، ربط البيانات. إلى تخصيص تخطيط أعمدة منفردة في DataGrid، يمكنك تعيين نوع العمود إلى "القوالب" وتعديلها قوالب للعمود. يمكن تقديم عنصر التحكم DataGrid دون القوالب، مما يجعل عنصر التحكم هذا مثالية لسيناريوهات التقارير. DataGrid يدعم أيضا التحديد والتحرير والحذف، والترحيل والفرز حسب العمود والأعمدة الزر.

لمزيد من المعلومات حول عنصر التحكم DataGrid ، راجع وثائق SDK إطار عمل.NET التالية:
عنصر تحكم خادم الويب Datalist
.aspx http://msdn.microsoft.com/en-us/library/aa710742 (VS.71)

الوصول إلى البيانات

يصف هذا القسم كيفية الوصول إلى البيانات من قاعدة بيانات و ربط البيانات إلى عناصر تحكم القائمة. يمكنك استخدام DataSet أو الفئة DataReader للحصول على بيانات من قاعدة بيانات.

فئة مجموعة البيانات

مجموعة البيانات يحتوي على عرضاً تقديمياً كاملة للبيانات، بما في ذلك الجدول العلاقات بين الجداول، وترتيب البيانات، بنية. فئات DataSet بالمرونة الكافية لتخزين أي نوع من المعلومات من قاعدة بيانات إلى ملف لغة توصيف الموسعة (XML). فئات مجموعة البيانات عديم الحالة; هذا يعني، يمكنك تمرير هذه الفئات من العميل إلى الملقم دون ربط موارد اتصال الخادم. ما يلي تعليمات برمجية يوضح كيفية استخدام مجموعة البيانات لربط البيانات إلى عنصر تحكم:

ملاحظة: يجب تعديل معلمات سلسلة الاتصال ك الضرورية للبيئة الخاصة بك.

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();				
لمزيد من المعلومات حول فئة مجموعة البيانات ، راجع وثائق SDK إطار عمل.NET التالية:

فئة DataReader

وعلى العكس، إذا كنت بحاجة فقط لعرض البيانات (ولا تتغير) سيتم عرضها، قد تكون فئة DataReader حل أفضل. على سبيل المثال، من الأفضل استخدام التحكم DataReaderDropDownList لأن DataReader مؤشر بيانات فقط. يوضح التعليمة البرمجية التالية كيفية استخدام فئة SqlDataReader لربط البيانات إلى عنصر تحكم:

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();				
للحصول على مزيد من المعلومات حول الوصول الفئة والبيانات SqlDataReader مع ASP.NET، راجع المواضيع التالية في وثائق.NET Framework SDK:

ربط في قائمة قوالب عنصر التحكم

يمكنك استخدام قوالب في قائمة عناصر تحكم الربط وإلى تخصيص السجلات الفردية من مصدر بيانات. يتضمن هذا القسم ثلاثة طرق للقيام بذلك.

أسلوب DataBinder.Eval

عندما يعمل مصدر البيانات مع البيانات التي يتم إرجاعها من قاعدة بيانات، قد يحتوي مصدر البيانات على أجزاء متعددة من المعلومات. يمكنك القيام بما استخدم الأسلوب DataBinder.Eval العام لإرجاع البيانات. في نموذج التعليمات البرمجية التالي، "au_id" يتم إرجاع الحقل من مصدر البيانات لكائن حاوية:
<%# DataBinder.Eval(Container.DataItem,"au_id") %>				
لمزيد من المعلومات حول أسلوب DataBinder.Eval ، راجع وثائق SDK إطار عمل.NET التالية:

الأنواع الصريحة

إذا كنت تحتاج مزيد من التحكم، استخدم الأنواع الصريحة. صريحة التحويل يستخدم كلمة أساسية تحويل نوع. تعمل هذه الكلمات الأساسية كدالات، ولكن ينشئ المحول البرمجي التعليمات البرمجية المضمنة. لذلك، يتم تنفيذ أسرع قليلاً من بواسطة دالة الدعوة. استخدام نماذج التعليمة البرمجية التالية الأنواع الصريحة:

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] %>				
لاحظ أن السابق عينات استخدام أما DataTable، ومجموعة فرعية من البياناتأو DataReader كمصدر بيانات.

حدث إيتيمداتابوند

يمكنك أيضا استخدام الحدث إيتيمداتابوند لعنصر التحكم لربط البيانات. يحدث هذا الحدث عند عنصر بيانات منضمة إلى عنصر التحكم. نموذج التعليمات البرمجية التالي 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 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()));            }}				
ربط بيانات ربط البيانات

تحذير: تمت ترجمة هذه المقالة تلقائيًا

خصائص

رقم الموضوع: 307860 - آخر مراجعة: 03/29/2013 05:33:00 - المراجعة: 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 KbMtar
تعليقات
ttps://c1.microsoft.com/c.gif?DI=4050&did=1&t=">&t=">/html>>html>t=">