帮酷LOGO
0 0 评论
  • 显示原文与译文双语对照的内容
文章标签:添加  TEMP  template  column  GRID  动态  Gridview  COL  

介绍

很多时候我们想知道如何动态地添加模板列。 当设计时不能确定列的数目( 列类型 等等 ) 时可能出现这种情况。 例如在从业务层检索数据源时,设计用户界面时,开发者不能确定列描述的列数和其他相关的事情。 在这种情况下,GridView 将被配置为在运行时自动生成列。 在早期版本的.NET。换句话说,。1.0中不可能添加模板列。 新版. NET 2.0之后,有一个工具可以在运行时动态添加模板列。

出于上述目的,我创建了继承 ITemplate 接口的类 DynamicTemplate

publicclass DynamicTemplate : System.Web.UI.ITemplate

现在第一步是实现该类的构造函数:

public DynamicTemplate(System.Web.UI.WebControls.ListItemType type)
{
 templateType = type;
}

这里我将 ListItemType 作为参数传递给构造函数,它将定义当前模板的类型。 换句话说,模板可以是 HeaderItemAlternatingItem 或者 Footer

接下来,为了定义控件模板列的类型,我添加了以下方法:

publicvoid AddControl(WebControl wbControl, 
 String BindPropertyName, String BindExpression)
{
 htControls.Add(htControls.Count, wbControl);
 htBindPropertiesNames.Add(htBindPropertiesNames.Count, BindPropertyName);
 htBindExpression.Add(htBindExpression.Count, BindExpression);
}

在这里,我们需要传递三个参数: wbcontrol 控件的属性名,BindPropertyName 是要绑定的控件的属性名称,是要绑定的控件的属性名,比如,TextBox 或者 Label 控件的Text 属性,以及要计算并分配给 BindProperty的任何有效绑定表达式。

现在,为了提供模板列功能,我们需要实现'InstantiateIn'方法。 在绑定发生之前,将对 GridView的每一行调用这里方法。

publicvoid InstantiateIn(System.Web.UI.Control container)
{
 PlaceHolder ph = new PlaceHolder();
 for (int i = 0; i < htControls.Count; i++)
 {
 //clone control  Control cntrl = CloneControl((Control)htControls[i]);
 switch (templateType)
 {
 case ListItemType.Header:
 break;
 case ListItemType.Item:
 ph.Controls.Add(cntrl);
 break;
 case ListItemType.AlternatingItem:
 ph.Controls.Add(cntrl);
 ph.DataBinding += new EventHandler(Item_DataBinding);
 break;
 case ListItemType.Footer:
 break;
 }
 }
 ph.DataBinding += new EventHandler(Item_DataBinding);
 container.Controls.Add(ph);
}

这里,我们首先克隆web控件,以便创建一个新副本,然后将这个新副本添加到所需的占位符。

接下来,要实现这里类,以便动态添加模板列:

TemplateField t = new TemplateField();
DynamicTemplate mt = new DynamicTemplate(ListItemType.Item);
TextBox t1 = new TextBox();
t1.ID = "txt";
t1.Visible = true;
t1.Text = "1";
mt.AddControl(t1, "Text", "Sno");

在这里我们创建一个模板列,它将显示一个 TextBox。 这里 TextBoxText 属性将与已经配置数据源的Sno 数据字段绑定在一起。

本文附上一个完整的实现,这是相当自行解释和简单的。



文章标签:COL  添加  TEMP  template  GRID  动态  Gridview  column  

Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语