如何:在模板化控件中绑定到数据

更新:2007 年 11 月

FormViewDataListRepeaterListView Web 服务器控件使用模板显示数据和检索用户输入,以插入、更新或删除数据。此外,您还可以将模板与 GridViewDetailsView 控件一同使用,以自定义数据布局。

通过将模板化控件的 DataSourceID 属性设置为数据源控件的 ID,可以将模板化控件绑定到数据源控件(例如 LinqDataSourceObjectDataSourceSqlDataSource 控件)。然后可以在模板中使用 Eval 和 Bind 函数绑定到数据源中的数据。有关更多信息,请参见 数据绑定表达式语法

使用模板将控件绑定到数据

  1. 向页添加数据源控件(如 SqlDataSource 控件),如下面的示例所示:

    <asp:SqlDataSource ID="SqlDataSource1" 
      SelectCommand="SELECT * FROM [Products]"
      ConnectionString="<%$ ConnectionStrings:NorthwindConnection %>"
      RunAt="server">
    </asp:SqlDataSource>
    
    <asp:SqlDataSource ID="SqlDataSource1" 
      SelectCommand="SELECT * FROM [Products]"
      ConnectionString="<%$ ConnectionStrings:NorthwindConnection %>"
      RunAt="server">
    </asp:SqlDataSource>
    
  2. 添加一个支持模板的控件,如 ASP.NET FormView 控件。

  3. 将模板化控件的 DataSourceID 属性设置为步骤 1 中数据源控件的 ID,如此示例中所示:

    <asp:FormView ID="FormView1"
      DataSourceID="SqlDataSource1"
      DataKeyNames="ProductID"     
      Runat="server">
    </asp:FormView>
    
  4. 向模板化控件添加模板并使用控件和标记填充这些模板。

  5. 若要显示数据,请将 Eval 函数作为属性设置使用,并引用绑定数据字段。在用于插入或编辑数据的模板中,使用 Bind 函数引用数据绑定字段,如以下示例所示:

    <asp:FormView ID="FormView1"
      DataSourceID="SqlDataSource1"
      DataKeyNames="ProductID"     
      RunAt="server">
    
      <ItemTemplate>
        <table>
          <tr><td align="right"><b>Product ID:</b></td>       <td><%# Eval("ProductID") %></td></tr>
          <tr><td align="right"><b>Product Name:</b></td>     <td><%# Eval("ProductName") %></td></tr>
          <tr><td align="right"><b>Category ID:</b></td>      <td><%# Eval("CategoryID") %></td></tr>
          <tr><td align="right"><b>Quantity Per Unit:</b></td><td><%# Eval("QuantityPerUnit") %></td></tr>
          <tr><td align="right"><b>Unit Price:</b></td>       <td><%# Eval("UnitPrice") %></td></tr>
        </table>                 
      </ItemTemplate>                   
    </asp:FormView>
    
    <asp:FormView ID="FormView1"
      DataSourceID="SqlDataSource1"
      DataKeyNames="ProductID"     
      RunAt="server">
    
      <ItemTemplate>
        <table>
          <tr><td align="right"><b>Product ID:</b></td>       <td><%# Eval("ProductID") %></td></tr>
          <tr><td align="right"><b>Product Name:</b></td>     <td><%# Eval("ProductName") %></td></tr>
          <tr><td align="right"><b>Category ID:</b></td>      <td><%# Eval("CategoryID") %></td></tr>
          <tr><td align="right"><b>Quantity Per Unit:</b></td><td><%# Eval("QuantityPerUnit") %></td></tr>
          <tr><td align="right"><b>Unit Price:</b></td>       <td><%# Eval("UnitPrice") %></td></tr>
        </table>                 
      </ItemTemplate>                 
    </asp:FormView>
    

    每个 Web 服务器控件支持不同的模板。例如,Repeater 控件支持一个 ItemTemplate 和一个 AlternatingItemTemplate,以使用交替控件、样式和标记来显示数据。有关 Web 服务器控件和受支持的模板的详细信息,请参见 ASP.NET 数据绑定 Web 服务器控件概述

请参见

任务

如何:使用 SqlDataSource 控件连接到 ODBC 数据库 (Visual Studio)

概念

数据源控件概述