1. 程式人生 > >.NET資料繫結時BoundField與TemplateField的區別

.NET資料繫結時BoundField與TemplateField的區別

在.NET中,資料繫結列是通過 asp:BoundField 或 TemplateField 元素定義的。通過設定 DataField 屬性,可以將 BoundField 繫結到 GridView 的關聯資料來源:

<asp:BoundField HeaderText="ShipCity" DataField="ShipCity"
    SortExpression="ShipCity"></asp:BoundField>

這將告訴 GridView 控制元件,當它處於檢視模式時,應該在 span 元素中顯示 ShipCity 值。當 GridView 處於編輯模式時,選定行中的這一列將在適當的 HTML 元素中顯示。在這種情況下,HTML 元素為 TextBox,因為它是一個字串值。該元素是基於繫結列的資料型別選擇的。例如,如果該列在 SQL Server 中被定義為位,則將使用 CheckBox 控制元件在編輯模式下顯示該列。

TemplateField 元素在繫結列的行為方式方面提供了更大的靈活性。請觀察以下摘自 Orders_SDS.aspx 頁的程式碼示例:

<asp:TemplateField SortExpression="OrderDate" HeaderText="OrderDate">
    <ItemTemplate>
        <asp:Label ID="lblOrderDate_Item" Runat="server"
            Text='<%# Bind("OrderDate", "{0:d}") %>'></asp:Label>
    </ItemTemplate>
    <EditItemTemplate>
        <asp:TextBox ID="txtOrderDate_Edit" Runat="server"
            Text='<%# Bind("OrderDate", "{0:d}") %>'></asp:TextBox>
    </EditItemTemplate>
</asp:TemplateField>

當 GridView 處於檢視模式時,它使用 TemplateColumn 在 Label 控制元件中顯示 OrderDate 列;當 GridView 處於編輯模式時,它使用 TemplateColumn 在 TextBox 控制元件中顯示 OrderDate 列。您還可以使用 FooterTemplate 來告訴 Template 列在頁尾中以不同的方式顯示該列。還可以使用 HeaderTemplate、AlternatingItemTemplate 甚至 InsertItemTemplate。

還請注意 ASP.NET 2.0 中引入的簡化的繫結語法。OrderDate 的值是通過呼叫 Bind 表示式並向它傳遞 GridView 的關聯資料來源中列的名稱和一個可選的資料格式字串表示式來設定的。在該示例中,我使用了表示短日期的資料格式字串。這些屬性都可以通過可藉助於 Visual Studio 2005 中的新增智慧標記功能訪問的屬性來輕鬆設定。