This article was translated by machine. To view in the article in English, select the English check box. You can also display the English text in a popup window by moving the mouse pointer over the text.
الترجمة
الأصلي
This documentation is archived and is not being maintained.

IBindableTemplate الواجهة

Visual Studio 2010

يوفر طريقة لعناصر تحكم حدود البيانات ASP.NET، مثل DetailsViewو FormView، شكل تلقائي يحدود لعنصر تحكم مصدر بيانات ASP.NET داخل templated مقاطع محتوى.

مساحة الاسم:  System.Web.UI
التجميع:  System.Web (في System.Web.dll)

public interface IBindableTemplate : ITemplate

IBindableTemplate واجهة يوفر طريقة لعناصر تحكم ASP.NET لربط البيانات، مثل DetailsView، GridView، و FormView، إلى يربط للبيانات المتوفرة بواسطة عنصر تحكم مصدر بيانات ASP.NET، مثل ObjectDataSourceأو SqlDataSource، وعندما يتضمن عنصر التحكم منضم للبيانات templated المحتوى.

ملاحظةملاحظة

الصفحة لا قم بتطبيق المطورين IBindableTemplateالواجهة. المطورين إنشاء حدود بيانات المخصصة عناصر التحكم قد تعالج IBindableTemplateالكائنات في تطبيقات PerformDataBindingو ExtractRowValuesالأساليب، ولكن قم بعدم تنفيذ الخاصة بهم IBindableTemplateالكائنات.

عناصر تحكم حدود البيانات مثل GridViewعادة ما تكون على علم بالأشجار التحكم التابعة الخاصة بها، ويمكن لذلك يحدود لاستخراج القيم من تلك القيم عليها، وتمرير هذه القيم بين عنصر التحكم منضم للبيانات وعنصر تحكم مصدر بيانات عند حدوث البيانات يحدود ing. ومع ذلك، عندما يحدد مطور صفحة المحتوى قالب d لتحكم محدود للبيانات، التحكم التابعة داخل قالب غير مرئي على تحكم محدود للبيانات الأصلية: يمكن تقديم الأصل التابع المحتوى (لأن تقديم عنصر تحكم s فاعلية نفسها)، ولكن ذلك لا يمكن يفك الضغط قيم هذه التابعة عنصر تحكم s لتمريرها إلى مصدر بيانات مرتبط عنصر تحكم's تحديث إدراج أو حذف تشغيل. في وحدات السيناريو حدود بيانات، محتويات templated هو غير شفاف لتحكم محدود لبيانات الأصلية. Bind بناء جملة يجعل من الممكن لعنصر تحكم منضم للبيانات إلى لاستخراج قيم من عنصر تحكم حدود بيانات داخل IBindableTemplateالمثيل.

يمكن ربط بيانات واحد-الطريق أو ثنائية الاتجاه. (يتم تعريف هذه الإرشادات ربط بواسطة BindingDirectionالتعداد.) حدود بيانات ذات الاتجاه الواحد هو تنفيذ أي حدود بيانات في اتجاه المتجهة للخارج، من عنصر تحكم مصدر بيانات لعنصر تحكم منضم للبيانات؛ على سبيل المثال، يتضمن أي سيناريو قراءة بيانات لحدود بيانات ذات الاتجاه الواحد. لربط البيانات ذات الاتجاه الواحد، يمكنك استخدام بناء الجملة لربط بيانات أحادية الاتجاه ( <%# Eval("fieldname") %>) داخل templated المحتوى، و لا تحتاج إلى استخدام الاتجاه ASP.NET ربط البيانات بناء جملة. حدود بيانات ثنائية الاتجاه وصف حدود بيانات في اتجاه المتجهة للداخل، من عنصر تحكم حدود بيانات إلى عنصر تحكم مصدر بيانات. التحرير تلقائي، إدراج، ثم قم بحذف وحدات السيناريو التي تستخدم ASP.NET حدود بيانات ومصدر بيانات عناصر التحكم وحدات سيناريو حدود بيانات ثنائية الاتجاه. استخدم هذه السيناريوهات الثاني-تعبيرات ربط بيانات الطريقة ( <%# Bind("fieldname") %>). IBindableTemplate واجهة والبنية التحتية ASP.NET تدعم ربط بيانات تلقائياً، مصرحة أو ثنائية الاتجاه بين بيانات ASP.NET المصدر عناصر التحكم ومحتوى templated. لمزيد من المعلومات حول بناء جملة تعبيرات ربط بيانات ASP.NET، راجع الربط إلى قواعد بياناتو نظرة عامة حول تعبيرات ربط البيانات.

محتوى templated لعناصر تحكم حدود بيانات هو غالباً معرفة شكل إلزامي. يصف الجدول التالي عمليات الأكثر استخداماً لربط بيانات templated بربط بيانات عناصر التحكم.

ربط بيانات عنصر تحكم

عملية

DetailsView

عنصر التحكم منضم للبيانات هو مرتبط ببيانات باستخدام DataSourceIDالخاصية لعنصر تحكم مصدر بيانات، ومحتوى templated هو المعرفة في ItemTemplate، EditItemTemplateأو InsertItemTemplateالخاصية.

GridView

عنصر التحكم منضم للبيانات هو مرتبط ببيانات باستخدام DataSourceIDالخاصية لعنصر تحكم مصدر بيانات، ومحتوى templated هو المعرفة في ItemTemplateأو EditItemTemplateالخاصية. GridView عنصر تحكم لا يعتمد على عملية الإدراج.

FormView

عنصر التحكم منضم للبيانات هو مرتبط بالبيانات باستخدام DataSourceIDالخاصية والمحتويات templated هو المعرفة في ItemTemplate، InsertItemTemplate، أو EditItemTemplateخاصية، أو في TemplateFieldالكائن.

DataList و Repeaterعناصر التحكم لا تعتمد تلقائية ثنائية الاتجاه ربط بيانات سيناريوهات.

ASP.NET ضمنياً بإنشاء IBindableTemplateكائن عند templated المحتوى الذي يرتبط بعنصر تحكم مصدر بيانات ASP.NET داخل القالب هو تحليل. وبوجه خاص، محلل ASP.NET بإنشاء مثيل من CompiledBindableTemplateBuilderعند ذلك يوزع templated المحتوى التي تستخدم بناء الجملة لربط بيانات ASP.NET ويحتوي على الخادم ويب ASP.NET لفئة عناصر التحكم التي تعتمد ربط بيانات. الملقم هذه ASP.NET عناصر تم وضع علامة بواسطة BindableAttributeالسمة.

IBindableTemplate تعريف واجهة أسلوب واحد، ExtractValues. يتم تعريف هذه الطريقة لربط البيانات ثنائية الاتجاه، حيث يمكن يفك الضغط زوج الاسم/القيمه من محتوى templated عنصر تحكم حدود البيانات والمرور الأزواج إلى عنصر تحكم مصدر بيانات في وقت التشغيل تلقائياً. لربط بيانات auإلىmatic إلى ناجحة، وأسماء الحقول المستخرجة من محتوى templated بواسطة ExtractValuesالطريقة يجب أن تتطابق مع أسماء المعلمات في عنصر تحكم مصدر بيانات المقترن. عنصر تحكم استدعاء المطورين ExtractValuesأسلوب بوضوح في عمليات تطبيق الخاصة بهم فقط ExtractRowValuesأو بعض الطرق الأخرى المشابهة لمخصصة ربط بيانات عنصر تحكم.

يوضح المثال تعليمات برمجية التالي كيفية FormViewعنصر تحكم يمكن تعريف محتوى templated بشكل إلزامي، بربط بيانات الموفرة من قبل SqlDataSourceعنصر تحكم، وعرض وتحرير السجلات موجود. محلل ASP.NET بتوزيع المحتوى templated وقم بإنشاء IBindableTemplateالكائن عند التشغيل بالوقت الذي هو قادراً على ضم قيم من SqlDataSourceعنصر التحكم إلى المناطق يربط بيانات المعرفة في القالب بواسطة كل من بناء يربط بيانات ASP.NET أحادية الاتجاه ( <%# Eval("fieldname") %>) وبناء الجملة الخاص بيربط بيانات ثنائية الاتجاه ( <%# Bind("fieldname") %>).

ملاحظة الأمانملاحظة الأمان

يحتوي هذا المثال على مربع نص يقبل إدخال المستخدم ، مما يعد تهديد أمان محتمل. بشكل افتراضي، تتحقق صفحات ويب ASP.NET من أن مُدخلات المستخدم لا تتضمن برنامج نصي أو عناصر HTML. لمزيد من المعلومات، راجع نظرة عامة حول عمليات استغلال البرنامج النصي.



<%@ Page language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

  void EmployeeFormView_ItemUpdating(Object sender, FormViewUpdateEventArgs e)
  {

    // Validate the field values entered by the user. This
    // example determines whether the user left any fields
    // empty. Use the NewValues property to access the new 
    // values entered by the user.
    ArrayList emptyFieldList = ValidateFields(e.NewValues);

    if (emptyFieldList.Count > 0)
    {

      // The user left some fields empty. Display an error message.

      // Use the Keys property to retrieve the key field value.
      String keyValue = e.Keys["EmployeeID"].ToString();

      MessageLabel.Text = "You must enter a value for each field of record " +
        keyValue + ".<br/>The following fields are missing:<br/><br/>";

      // Display the missing fields.
      foreach (String value in emptyFieldList)
      {
        // Use the OldValues property to access the original value
        // of a field.
        MessageLabel.Text += value + " - Original Value = " + 
          e.OldValues[value].ToString() + "<br />";
      }

      // Cancel the update operation.
      e.Cancel = true;

    }
    else
    {
      // The field values passed validation. Clear the
      // error message label.
      MessageLabel.Text = "";
    }

  }

  ArrayList ValidateFields(IOrderedDictionary list)
  {

    // Create an ArrayList object to store the
    // names of any empty fields.
    ArrayList emptyFieldList = new ArrayList();

    // Iterate though the field values entered by
    // the user and check for an empty field. Empty
    // fields contain a null value.
    foreach (DictionaryEntry entry in list)
    {
      if (entry.Value == String.Empty)
      {
        // Add the field name to the ArrayList object.
        emptyFieldList.Add(entry.Key.ToString());
      }
    }

    return emptyFieldList;
  }

  void EmployeeFormView_ModeChanging(Object sender, FormViewModeEventArgs e)
  {
    if (e.CancelingEdit)
    {
      // The user canceled the update operation.
      // Clear the error message label.
      MessageLabel.Text = "";
    }
  }

</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>FormView Example</title>
</head>
<body>
    <form id="form1" runat="server">

      <h3>FormView Example</h3>

      <asp:formview id="EmployeeFormView"
        datasourceid="EmployeeSource"
        allowpaging="true"
        datakeynames="EmployeeID"
        headertext="Employee Record"
        emptydatatext="No employees found."
        onitemupdating="EmployeeFormView_ItemUpdating"
        onmodechanging="EmployeeFormView_ModeChanging"  
        runat="server">

        <headerstyle backcolor="CornFlowerBlue"
          forecolor="White"
          font-size="14"
          horizontalalign="Center"  
          wrap="false"/>
        <rowstyle backcolor="LightBlue"
          wrap="false"/>
        <pagerstyle backcolor="CornFlowerBlue"/>

        <itemtemplate>
          <table>
            <tr>
              <td rowspan="6">
                <asp:image id="EmployeeImage"
                  imageurl='<%# Eval("PhotoPath") %>'
                  alternatetext='<%# Eval("LastName") %>' 
                  runat="server"/>
              </td>
              <td colspan="2">
                  &nbsp; 
              </td>
            </tr>
            <tr>
              <td>
                <b>Name:</b>
              </td>
              <td>
                <%# Eval("FirstName") %> <%# Eval("LastName") %>
              </td>
            </tr>
            <tr>
              <td>
                <b>Title:</b>
              </td>
              <td>
                <%# Eval("Title") %>
              </td>
            </tr>
            <tr>
              <td>
                <b>Hire Date:</b>                 
              </td>
              <td>
                <%# Eval("HireDate","{0:d}") %>
              </td>
            </tr>
            <tr style="height:150; vertical-align:top">
              <td>
                <b>Address:</b>
              </td>
              <td>
                <%# Eval("Address") %><br/>
                <%# Eval("City") %> <%# Eval("Region") %>
                <%# Eval("PostalCode") %><br/>
                <%# Eval("Country") %>   
              </td>
            </tr>
            <tr>
              <td colspan="2">
                <asp:linkbutton id="Edit"
                  text="Edit"
                  commandname="Edit"
                  runat="server"/> 
              </td>
            </tr>
          </table>       
        </itemtemplate>
        <edititemtemplate>
          <table>
            <tr>
              <td rowspan="6">
                <asp:image id="EmployeeEditImage"
                  imageurl='<%# Eval("PhotoPath") %>'
                  alternatetext='<%# Eval("LastName") %>' 
                  runat="server"/>
              </td>
              <td colspan="2">
                  &nbsp; 
              </td>
            </tr>
            <tr>
              <td>
                <b>Name:</b>
              </td>
              <td>
                <asp:textbox id="FirstNameUpdateTextBox"
                  text='<%# Bind("FirstName") %>'
                  runat="server"/>
                <asp:textbox id="LastNameUpdateTextBox"
                  text='<%# Bind("LastName") %>'
                  runat="server"/>
              </td>
            </tr>
            <tr>
              <td>
                <b>Title:</b>
              </td>
              <td>
                <asp:textbox id="TitleUpdateTextBox"
                  text='<%# Bind("Title") %>'
                  runat="server"/> 
              </td>
            </tr>
            <tr>
              <td>
                <b>Hire Date:</b>                 
              </td>
              <td>
                <asp:textbox id="HireDateUpdateTextBox"
                  text='<%# Bind("HireDate", "{0:d}") %>'
                  runat="server"/>
              </td>
            </tr>
            <tr style="height:150; vertical-align:top">
              <td>
                <b>Address:</b>
              </td>
              <td>
                <asp:textbox id="AddressUpdateTextBox"
                  text='<%# Bind("Address") %>'
                  runat="server"/>
                <br/>
                <asp:textbox id="CityUpdateTextBox"
                  text='<%# Bind("City") %>'
                  runat="server"/> 
                <asp:textbox id="RegionUpdateTextBox"
                  text='<%# Bind("Region") %>'
                  width="40"
                  runat="server"/>
                <asp:textbox id="PostalCodeUpdateTextBox"
                  text='<%# Bind("PostalCode") %>'
                  width="60"
                  runat="server"/>
                <br/>
                <asp:textbox id="CountryUpdateTextBox"
                  text='<%# Bind("Country") %>'
                  runat="server"/> 
              </td>
            </tr>
            <tr>
              <td colspan="2">
                <asp:linkbutton id="UpdateButton"
                  text="Update"
                  commandname="Update"
                  runat="server"/>
                <asp:linkbutton id="CancelButton"
                  text="Cancel"
                  commandname="Cancel"
                  runat="server"/> 
              </td>
            </tr>
          </table>       
        </edititemtemplate>

        <pagersettings position="Bottom"
          mode="Numeric"/> 

      </asp:formview>

      <br/><br/>

      <asp:label id="MessageLabel"
          forecolor="Red"
          runat="server"/>

      <!-- This example uses Microsoft SQL Server and connects  -->
      <!-- to the Northwind sample database. Use an ASP.NET     -->
      <!-- expression to retrieve the connection string value   -->
      <!-- from the Web.config file.                            -->
      <asp:sqldatasource id="EmployeeSource"
        selectcommand="Select [EmployeeID], [LastName], [FirstName], [Title], [Address], [City], [Region], [PostalCode], [Country], [HireDate], [PhotoPath] From [Employees]"
        updatecommand="Update [Employees] Set [LastName]=@LastName, [FirstName]=@FirstName, [Title]=@Title, [Address]=@Address, [City]=@City, [Region]=@Region, [PostalCode]=@PostalCode, [Country]=@Country Where [EmployeeID]=@EmployeeID"
        connectionstring="<%$ ConnectionStrings:NorthWindConnectionString%>" 
        runat="server"/>

    </form>
  </body>
</html>



نظام التشغيل Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, الإصدار x64 من نظام التشغيل Windows XP Professional, Windows XP Starter Edition, Windows Server 2008, نظام التشغيل Windows Server 2003, نظام التشغيل Windows Server 2000 المزود بحزمة الخدمة SP4, نظام التشغيل Windows Millennium Edition, نظام التشغيل Windows 98

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

.NET Framework

مدعوم في: 4, 3.5, 3.0, 2.0
إظهار: