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和datatableDataSet
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 DataSetdsTablesAdd(table); // Return DataSetreturn ds;
}
}
[] []