GridView控件中的一個重要的列類型是TemplateField,它可以使用模板完全定制列的內容。
提示:
如本章前面所述,控件模板只是一個可以添加其他內容的容器,如文本、HTML控件甚或ASP.NET控件。
TemplateField提供了6個不同的模板,用於定制列的指定區域,或創建列中的單元格能進入的模式,如編輯模式。表7-6列出了這些模板。
表 7-6
模 板 名
說 明
ItemTemplate
用於顯示數據綁定控件的TemplateField中的一項
AlternatingItemTemplate
用於顯示TemplateField的替換項
EditItemTemplate
用於顯示編輯模式下的TemplateField項
InsertItemTemplate
用於顯示插入模式下的TemplateField項
HeaderTemplate
用於顯示TemplateField的標題部分
FooterTemplate
用於顯示TemplateField的腳標部分
要在GridView中使用TemplateField,只需用上一節介紹的Add Field對話框給柵格添加列類型。添加了字段後,就會在GridView中添加一個新的<asp: TemplateField>標記,如程序清單7-32所示。
程序清單7-32 GridView的TemplateField
<asp: TemplateField></asp: TemplateField>
這個元素是該列包含的各種模板的容器。添加了該列後,就可以創建定制的內容了。為此,可以使用Visual Studio 2008設計界面的模板編輯功能,或在Source視圖中為TemplateField元素添加定制的內容。
在Visual Studio設計界面上訪問模板編輯功能有兩種方式。首先是右擊GridView,從彈出菜單的Edit Template選項中選擇Column[nn](其中nn是列索引)。使用這種方式時,在Visual Studio 2008設計界面上會顯示該列的所有模板,如圖7-22所示。
圖 7-22第二種方式是打開GridView控件的智能標記,選擇Edit Template命令。這會打開一個菜單,如圖7-23所示,從中可以選擇想要編輯的列模板。 (點擊查看大圖)圖 7-23ItemTemplate是最常用的模板,它控制著列中每個單元格的默認內容。程序清單7-33演示了如何用ItemTemplate定制列的內容。
程序清單7-33 使用ItemTemplate
<asp:TemplateField HeaderText='CurrentStatus'> <ItemTemplate> <table> <tr> <td align='center' style='width: 78px'> <asp:Button ID='Button2' runat='server' Text='Enable' /></td> <td align='center' style='width: 76px'> <asp:Button ID='Button3' runat='server' Text='Disable' /></td> </tr> </table> </ItemTemplate> </asp:TemplateField>
注意在這個示例中,ItemTemplate包含HTML控件和ASP.NET控件。圖7-24顯示了該示例在浏覽器中執行的結果。
因為GridView控件綁定了數據,所以還可以用數據綁定表達式訪問綁定到控件上的數據,如Eval、XPath或Bind表達式。例如,程序清單7-34說明了如何用Eval方法添加一個數據綁定表達式,設置按鈕控件的文本字段。本章後面將介紹數據綁定表達式的更多內容。
程序清單7-34 添加數據綁定表達式
<asp:gridview id="GridView1" <asp:TemplateField HeaderText='CurrentStatus'> <ItemTemplate> <table> <tr> <td align='center' style='width: 78px'> <asp:Button ID='Button2' runat='server' Text='<%# 'Enable ' + Eval('CustomerID') %>' /></td> <td align='center' style='width: 76px'> <asp:Button ID='Button3' runat='server' Text='<%# 'Disable ' + Eval('CustomerID') %>' /> </td> </tr> </table> </ItemTemplate> </asp:TemplateField>(點擊查看大圖)圖 7-24
其他常用的模板包括InsertTemplate和EditTemplate。在柵格中的一行進入插入或編輯模式時,柵格就會使用這些模板。