今天有些时间,把用cs代码添加编辑列及动态添加编辑模板作了整理。动态添加编辑列比较简单,即

TemplateField tf=new TemplateField(),但难得是 往编辑列里动态添加编辑模版项 ItemTemplate。那天上网找了好多资料,才找到解决方法。先创建一个类继承模板接口 ITemplate,用构造函数实现返回Template类。废话不多说了,现给出例子,看了就清楚了。例子延续前面的动态绑定字段列的。

创建Template 的类 cs:GVItemTemplate.cs

public class GridViewItemTemplate:ITemplate

{

private string obj;  //控件对象的字符串,以此来判断具体创建哪个控件

private DataControlRowType templateType;  //当前行的模板 (Header,item)

private string colName;  //控件要显示的字符,或是绑定数据源的字段列名

public GridViewItemTemplate(DataControlRowType rtype, string controlStr, string colN)

{

templateType = rtype;

colName = colN;

obj = controlStr;

}

public GridViewItemTemplate(DataControlRowType rtype, string colN)

{

templateType = rtype;

colName = colN;

obj = "TextBox";

}

public void InstantiateIn(System.Web.UI.Control container)

{

switch (templateType)

{

case DataControlRowType.Header:

Literal headlt = new Literal();

headlt.Text = colName;

container.Controls.Add(headlt);

break;

case DataControlRowType.DataRow:

switch (obj.ToLower())

{

case "htmlcheckbox":

HtmlInputCheckBox cbkeys = new HtmlInputCheckBox();

cbkeys.ID = "cb_keys";

cbkeys.DataBinding += new EventHandler(this.CheckBoxDataBinding);

container.Controls.Add(cbkeys);

break;

default:

TextBox myTextBox = new TextBox();

myTextBox.DataBinding += new EventHandler(this.TextBoxDataBinding);

container.Controls.Add(myTextBox);

break;

}

break;

default:

break;

}

}

private void TextBoxDataBinding(Object sender, EventArgs e)

{

TextBox myTextBox = (TextBox)sender;

GridViewRow row = (GridViewRow)myTextBox.NamingContainer;

myTextBox.Text = System.Web.UI.DataBinder.Eval(row.DataItem, colName).ToString();

}

private void CheckBoxDataBinding(Object sender, EventArgs e)

{

GridViewRow row=null;

switch (obj.ToLower())

{

case "htmlcheckbox":

HtmlInputCheckBox hcbox = (HtmlInputCheckBox)sender;

row= (GridViewRow)hcbox.NamingContainer;

hcbox.Value = System.Web.UI.DataBinder.Eval(row.DataItem, colName).ToString();

break;

default:

CheckBox cbox = (CheckBox)sender;

row = (GridViewRow)cbox.NamingContainer;

cbox.Text = System.Web.UI.DataBinder.Eval(row.DataItem, colName).ToString();

break;

}

}

}

使用GridView控件的页面 cs代码:TestGridView.aspx.cs

void BindFields(int tbid)

{

TemplateField tf = new TemplateField();

tf.ItemTemplate = new GridViewItemTemplate(DataControlRowType.DataRow, "htmlcheckbox", "dataKey");

tf.HeaderTemplate = new GridViewItemTemplate(DataControlRowType.Header, "htmlcheckbox", "");

tf.HeaderStyle.CssClass = "cbox";

this.gv_Data.Columns.Add(tf);

}

templatefield 动态_GridView动态创建templateField | 学步园相关推荐

  1. linux定位so快捷方式_Linux动态库(.so)搜索路径 | 学步园

    众所周知,Linux动态库的默认搜索路径是/lib和/usr/lib.动态库被创建后,一般都复制到这两个目录中.当程序执行时需要某动态库, 并且该动 态库还未加载到内存中,则系统会自动到这两个默认搜索 ...

  2. asp.net html table,在ASP.NET中利用HtmlTable动态创建表格 | 学步园

    ASP.NET 2.0 文件1: Deafault.aspx HtmlTable演示 HtmlTable实例演示 输入表格行数: 输入表格单元格: 文件2:Deafault.aspx.cs using ...

  3. java treetable_在Swing中创建TreeTable | 学步园

    TreeTable是Tree和Table的一个结合- 就是一个即能够展开和收起行,同时也能够显示多个列的组件.在Swing的标准包里没有一个叫做JtreeTable的组件,但是我们很容易通过把Jtre ...

  4. db2dual_db2 oracle 创建 序列 | 学步园

    1.创建序列最小值1,最大值2147483647, 并 修改 从 500开始++CREATE SEQUENCE "LXGZZS"."SEQ_COMMON" AS ...

  5. Ubuntu18.04的网络配置(静态IP和动态IP) - OpsDrip - 博客园

    Ubuntu18.04的网络配置(静态IP和动态IP) - OpsDrip - 博客园

  6. SAP QM中阶之动态修改规则创建

    SAP QM中阶之动态修改规则创建 1, 执行事务代码QDR1或者如下的菜单路径, 可以用来创建动态修改规则. 点击菜单或者执行事务代码QDR1, 进入如下界面, 输入DMR的code,比如Z01,回 ...

  7. mysql event scheduler机制 与 动态表名创建

    mysql event scheduler机制 与 动态表名创建 今天有一个需求,需要定时在mysql创建表与删除表,以及根据日期命名表名.诚然,通过外部程序很容易实现与控制这一切. 但是需要额外的服 ...

  8. Python动态类和动态方法的创建和调用

    借助于python的动态语言特性,很容易对对象进行添加方法或者属性,这也是python的灵活之一. 动态生成类的属性及其方法 在某些情况可能要根据不同的参数来动态生成不同的实例方法.静态方法.类方法. ...

  9. 自己动手之使用反射和泛型,动态读取XML创建类实例并赋值

    前言: 最近小匹夫参与的游戏项目到了需要读取数据的阶段了,那么觉得自己业余时间也该实践下数据相关的内容.那么从哪入手呢?因为用的是Unity3d的游戏引擎,思来想去就选择了C#读取XML文件这个小功能 ...

最新文章

  1. LVS +DR +keepalived高可用性web集群
  2. 如何禁止Linux内核的-O2编译选项【转】
  3. 【转】Android子线程真的不能更新UI么
  4. 基于casperjs、resemble.js实现一个像素对比服务
  5. 【阿里妈妈营销科学系列】第七篇:目标群组发现
  6. php 实现百度坐标转换,PHP实现腾讯与百度坐标转换
  7. 嘉奥丰农显示无法连接服务器,Arcaea无法连接服务器如何解决
  8. [转载]c语言中命令行参数argc,argv
  9. windows系统上PrtSc,ScroLk,Pause等三个功能按钮的作用
  10. 使用活字格制作企业办公用品管理软件
  11. 【推荐】样本/数据一致性检验的方法
  12. 运营商价格战终于打起来了,中国联通也有19元套餐
  13. php自动计算增长率,Oracle表空间增长率监控脚本
  14. 杂谈随想第002篇:博客访问量破万的想法
  15. 前端面试题-10-11作用域 作用域链
  16. html5 羽毛球,当上班族和羽毛球碰撞到一起,这样的生活才是标配
  17. 【思科ACI】APIC手动安装及升级
  18. 图形推理题 答案揭晓
  19. 2023程序员今年的一些现状
  20. 惠普计算机怎样添加程序,小编教你惠普电脑如何进入bios设置

热门文章

  1. WPF自定义控件 —— 装饰器
  2. Maven的安装以及在Myeclipse上的配置——超详细
  3. Android 中英文语言切换
  4. Android 自定义软键盘实现
  5. cesium billboard 设置距离控制可见度
  6. x3250m6系列服务器,IBM服务器X3250 M6 E3-1230v6 8GB 4x3.5 C110 300W 无驱
  7. php ci post 请求,CI框架中判断post,ajax,get请求的方法
  8. Springcloud整理
  9. 怎么在电脑安装php文件夹在哪个文件夹,php进行文件上传时找不到临时文件夹怎么办,电脑自动保存的文件在哪里...
  10. java 注入 循环_spring依赖注入——循环依赖