using System;
using System.Web.UI;
using System.Web.UI.WebControls;
/// <summary>
/// 自定义模板类
/// 实现了ITemplate接口
/// </summary>
public class CustomTemplate : ITemplate
{
/// <summary>
/// ITemplate接口成员
/// </summary>
/// <param name="container"></param>
public void InstantiateIn(Control container)
{
Label label = new Label();
//在绑定数据源时设置内容
label.DataBinding += new EventHandler(DataBinding);
container.Controls.Add(label);
}
/// <summary>
/// 绑定数据时发生
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void DataBinding(object sender, EventArgs e)
{
Label label = sender as Label;
if (label != null)
{
/*
*
* 步骤:
* 1).获取数据绑定控件(Repeater、DataList、DataGrid)中的项
* 2).从行控件中获取数据赋值给Label控件
*
*/
IDataItemContainer container = null;
if (label.NamingContainer is RepeaterItem) //label.NamingContainer即为数据绑定控件的项
container = (RepeaterItem)label.NamingContainer;
else if (label.NamingContainer is DataListItem)
container = (DataListItem)label.NamingContainer;
else if (label.NamingContainer is DataGridItem)
container = (DataGridItem)label.NamingContainer;
if (container != null)
label.Text = DataBinder.Eval(container.DataItem, "ProductName", null);
}
}
}客户端调用:
using System;
using System.Data;
using System.Data.SqlClient;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Repeater1.ItemTemplate = new CustomTemplate();//设置模板
DataList1.ItemTemplate = new CustomTemplate();//设置模板
using (SqlConnection conn = new SqlConnection("server=(local);database=Northwind;user id=sa;password=sa;"))
{
using (SqlDataAdapter adapter = new SqlDataAdapter("Select * FROM Products", conn))
{
DataTable table = new DataTable();
adapter.Fill(table);
Repeater1.DataSource = table;
Repeater1.DataBind();
DataList1.DataSource = table;
DataList1.DataBind();
}
}
}
}
评论(0)
暂无评论。