<asp:TemplateField HeaderText="Restore">
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" CommandName="Restore" Text="Restore" CommandArgument='<%#Eval( "ID ")%>'></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>如果在aspx页面上添加一个TemplateField是这样的,如何在后台给一个GridVew添加一个这样的TemplateField
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" CommandName="Restore" Text="Restore" CommandArgument='<%#Eval( "ID ")%>'></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>如果在aspx页面上添加一个TemplateField是这样的,如何在后台给一个GridVew添加一个这样的TemplateField
会有很多,代码比较长,要慢慢理解才行
{
// SqlDataSource相关设置
SqlDataSource1.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["NorthwindConnectionString"].ConnectionString;
SqlDataSource1.SelectCommand = "select employeeID,FirstName,LastName from employees"; if (!IsPostBack)
{
// 一看就知道
GridView1.DataSourceID = "SqlDataSource1";
GridView1.AutoGenerateColumns = false; TemplateField tf1 = new TemplateField();
// 实例化我们的自定义模板类(实现了ITemplate接口的都行)
// 而后将该对象赋值给TemplateField的ItemTemplate属性
MyTemplate t1 = new MyTemplate("FirstName");
tf1.HeaderText = "First Name";
tf1.ItemTemplate = t1; TemplateField tf2 = new TemplateField();
MyTemplate t2 = new MyTemplate("LastName");
tf2.HeaderText = "Last Name";
tf2.ItemTemplate = t2; // 增加模板列到GridView的列集合里。
GridView1.Columns.Add(tf1);
GridView1.Columns.Add(tf2);
}
}
}
/// <summary>
/// 自定义模板类
/// </summary>
public class MyTemplate : ITemplate
{
private string _colname; /// <summary>
/// 构造函数
/// </summary>
/// <param name="colname">列的名字(对应数据库的字段)</param>
public MyTemplate(string colname)
{
this._colname = colname;
} /// <summary>
/// 实现接口ITemplate的方法
/// </summary>
/// <param name="container"></param>
/// <res>
/// 1、new一个LiteralControl
/// 2、给LiteralControl加一个绑定事件
/// 3、把该控件加到容器控件集合里
/// </res>
public void InstantiateIn(Control container)
{
LiteralControl l = new LiteralControl();
l.DataBinding += new EventHandler(this.OnDataBinding);
container.Controls.Add(l);
} private void OnDataBinding(object sender, EventArgs e)
{
LiteralControl l = (LiteralControl)sender; // 得到l的容器(父亲)——GridViewRow
GridViewRow container = (GridViewRow)l.NamingContainer;
// 通过列名(对应数据库的字段)给l赋值
l.Text = ((DataRowView)container.DataItem)[_colname].ToString();
}
}
{
private string _colname; public NimeuxTemplete(string colname)
{
this._colname = colname;
} public void InstantiateIn(Control container)
{
LiteralControl l = new LiteralControl();
l.DataBinding += new EventHandler(this.OnDataBinding);
container.Controls.Add(l);
} private void OnDataBinding(object sender, EventArgs e)3 {
LiteralControl l = (LiteralControl)sender; GridViewRow container = (GridViewRow)l.NamingContainer; l.Text = ((DataRowView)container.DataItem)[_colname].ToString();
}
}
}
TemplateField tf1 = new TemplateField();
NimeuxTemplete nt1 = new NimeuxTemplete("OldCard");
tf1.HeaderText = "卡号";
tf1.ItemTemplate = nt1;
this.gvFSBT.Columns.Add(tf1);
{
GridView1.DataSourceID = "SqlDataSource1";
GridView1.AutoGenerateColumns = false;
GridView1.DataKeyNames = new string[] { "EmployeeID" };
GridView1.AllowPaging = true;
GridView1.AllowSorting = true;
GridView1.PageSize = 5; BoundField bf3 = new BoundField();
CommandField cf = new CommandField();
cf.ButtonType = ButtonType.LinkButton;
cf.CommandName = "Restore";
cf.ShowCancelButton = true;
cf.ShowEditButton = true; GridView1.Columns.Add(bf3);
GridView1.Columns.Add(cf);
}