ASPNET中經常會使用到templates(模版)功能比如在datagriddatalistrepeater等控件中使用templates將會大大增強其功能以往我們一般是在設計程序時就已經設置好控件中的模版是怎樣的了但是有的時候可能我們需要動態加載模版比如當你要求你的應用程序的界面風格隨著用戶的需求而變化時你就需要到動態加載模版的功能了但要注意的是並不是所有的web控件都支持模版功能而且要注意哪些控件支持模版的哪些功能下面簡單列出了一些支持模版功能的控件
Repeater控件支持的模版有
HeaderTemplate FooterTemplate ItemTemplate AlternatingItemTemplate SeperatorTemplate
Datelist控件支持的模版有
HeaderTemplate FooterTemplate ItemTemplate AlternatingItemTemplate SeparatorTemplate SelectedItemTemplate EditItemTemplate
Datagrid控件支持的模版有
HeaderTemplate FooterTemplate ItemTemplate EditItemTemplate Pager
下面我將以動態加載datalist控件的模版來說明如何動態加載模版
首先來了解動態加載模版的原理在NET中有templatecontrol類這個類是page和usercontrol類的基類它也同時定義了page和usercontrol類的基本功能該類提供了兩個方法loadcontrol和loadtemplateLoadcontrol方法裝載來自外部文件的控件並且返回usercontrol類對象而loadtemplate方法加載來自外部文件的模版並且返回的是Itemplate對象
Loadtemplate方法中只有一個參數參數值是外部模版文件的路徑並且返回itemplate對象而datalist控件提供了一系列的屬性可以設置各種模版的屬性包括有AlternatingItemTemplate EditItemTemplate FooterTemplate HeaderTemplate ItemTemplate SelectedItemTemplate 和 SeperatorTemplate在下文中將會看到相關介紹
接著我們開始介紹例子在示例程序中是使用動態創建數據表和數據列的並且將數據的創建封裝到一個Db類中好讓讀者進一步回顧如何動態創建數據表
數據列等並沒用從數據庫中提取(當然你也可以用傳統的讀取數據庫的方法)
public class DB{
public DB()
{ }
/// <summary>
/// Method returns a DataSet object filled with data
/// </summary>
public static DataSet GetDataSet()
{
//創建dataset和datatable
DataSet ds = new DataSet();
DataTable table = new DataTable(Records);
DataColumn col;
//增加一個列
col = new DataColumn();
colDataType = SystemTypeGetType(SystemInt);
colColumnName = ID;
colReadOnly = true;
colUnique = true;
tableColumnsAdd(col);
col = new DataColumn();
colDataType = SystemTypeGetType(SystemString);
colColumnName = Name;
colAutoIncrement = false;
colCaption = Name;
colReadOnly = false;
colUnique = false;
tableColumnsAdd(col);
col = new DataColumn();
colDataType = SystemTypeGetType(SystemString);
colColumnName = Address;
colAutoIncrement = false;
colCaption = Address;
colReadOnly = false;
colUnique = false;
tableColumnsAdd(col);
//增加一條記錄
DataRow row = tableNewRow();
row[ID] = ;
row[Name] = Melanie Giard;
row[Address] = rd Street Park Road NY City NY;
tableRowsAdd(row);
row = tableNewRow();
row[ID] = ;
row[Name] = Puneet Nehra;
row[Address] = rd Blvd Ashok Vihar New Delhi;
tableRowsAdd(row);
row = tableNewRow();
row[ID] = ;
row[Name] = Raj Mehta;
row[Address] = Nagrath Chowk Jabalpur;
tableRowsAdd(row);
row = tableNewRow();
row[ID] = ;
row[Name] = Max Muller;
row[Address] = North Street Hernigton Russia;
tableRowsAdd(row);
// Add DataTable to DataSet
dsTablesAdd(table);
// Return DataSet
return ds;
}}
接下來我們首先創建若干個模版文件我們先創建兩組模版文件每一組模版文件分別包含有headerfooteritemalternating item四個模版文件保存成ascx文件這樣我們就有兩類型風格的模版了每類型風格的模版中都有自己的headerfooteritemalternating item子模版下面為其中一個item模版文件其他的類似
<%@ Control Language=VB %>
<FONT face=verdana color=green size=><b>ID: </b>
<%# DataBinderEval(CType(Container DataListItem)DataItem ID) %>
<b>Name: </b>
<%# DataBinderEval(CType(Container DataListItem)DataItem Name) %>
<br>
<b>Address: </b>
<%# DataBinderEval(CType(Container DataListItem)DataItem Address) %>
<p>
</FONT>
最後我們開始創建應用程序新建一個工程添加兩個按鈕和一個datalist控件如下圖
.NET編程免費提供,內容來源於互聯網,本文歸原作者所有。