动态添加绑定列很简单:例如:

GridView1.DataSourceID = "SqlDataSource1";

BoundField bf1 = new BoundField();
        BoundField bf2 = new BoundField();
        BoundField bf3 = new BoundField();

bf1.HeaderText = "Employee ID";
        bf1.DataField = "EmployeeID";
        bf1.ReadOnly = true;
        bf1.SortExpression = "EmployeeID";
        bf2.HeaderText = "First Name";
        bf2.DataField = "FirstName";
        bf2.SortExpression = "FirstName";

bf3.HeaderText = "Last Name";
        bf3.DataField = "LastName";
        bf3.SortExpression = "LastName";

CommandField cf = new CommandField();
        cf.ButtonType = ButtonType.Button;
        cf.ShowCancelButton = true;
        cf.ShowEditButton = true;

GridView1.Columns.Add(bf1);
        GridView1.Columns.Add(bf2);
        GridView1.Columns.Add(bf3);
        GridView1.Columns.Add(cf);
动态绑定模板列稍微复杂:

首先创建一个类,该类时继承了System.Web.UI.ITemplate

public class MyTemplate:System.Web.UI.ITemplate
{
    private string proName;
    public MyTemplate()
    {
        //
        //TODO: 在此处添加构造函数逻辑
        //
    }
    public string ProName//要绑定的数据源字段名称
    {
        set { proName = value; }
        get { return proName; }
    }

public void InstantiateIn(Control container)//关键实现这个方法
    {
        TextBox hi = new TextBox();
        hi.Text = "";
        hi.DataBinding += new EventHandler(hi_DataBinding);//创建数据绑定事件
        container.Controls.Add(hi);
    }

void hi_DataBinding(object sender, EventArgs e)
    {
        TextBox hi = (TextBox)sender;
        GridViewRow container = (GridViewRow)hi.NamingContainer;
        //关键位置
        //使用DataBinder.Eval绑定数据
        //ProName,MyTemplate的属性.在创建MyTemplate实例时,为此属性赋值(数据源字段)
        hi.Attributes.Add("onclick", "alert('" + DataBinder.Eval(container.DataItem, ProName).ToString() + "');");
    
}
上面时创建了一个textbox的模板,

页面使用时

2.*.aspx页面后台cs代码

DataSet ds = null;
            BLL.model_task bll = new BLL.model_task();
            ds = bll.GetList(string.Empty);

TemplateField tf = new TemplateField();
            tf.HeaderText = "自定义模板列";
            MyTemplate mt = new MyTemplate();
            mt.ProName = "ID";//数据源字段
            tf.ItemTemplate = mt;
            this.GridView1.Columns.Add(tf);
            this.GridView1.DataSource = ds;
            this.GridView1.DataBind();
这样就会添加了一个textbox的模板列;

GridView 动态添加绑定列和模板列的更多相关文章

  1. asp.net gridview动态添加列,并获取其数据;

    1,绑定数据前先动态添加列,见方法CreateGridColumn(只在第一次加载动态添加): 2,gvlist_RowDataBound为对应列添加控件: 前台代码: <%@ Page Lan ...

  2. GridView动态添加列之后,导致PostBack(回发)页面数据丢失问题解决

    直入主题,首先声明,这个问题是无法解决的,特此在这说明 一.如何动态添加列,如下: 在页面重写OnInit事件,至于为什么要在这个事件写,根据页面的声明周期和经验可知(不用去别的地方找了,这个我找了之 ...

  3. gridview动态添加列的问题

    相信大家也和我一样遇到过这种问题,gridview在生成列的时候当列不确定怎么办?下面分享一下自己的解决方法. 举个列子说明一下. 普通列的添加比较简单. BoundField bf = new Bo ...

  4. WPF GridView动态添加项并读取数据

    假设数据库有如下表, 首先我们创建一个WPF工程,界面如下 <Window x:Class="WpfApplication2.MainWindow" xmlns=" ...

  5. vue 动态添加 <style> 样式 vue动态添加 绑定自定义字体样式

    created(){ //动态添加自定义字体样式 let style = document.createElement('style'); style.type = "text/css&qu ...

  6. GridView动态添加列并判断绑定数据DataTable的列类型控制展示内容

    此篇随笔是2013年根据项目需求开发记录的,不一定符合大众口味,只需了解开发思路,毕竟解决方案多种多样. 下面简单说说需求点吧: (1)通过下拉列表可以选择一个DataSet(数据集),一个DataS ...

  7. GridView动态添加View

    activity_main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout ...

  8. jquery append 动态添加的元素绑定事件on

    用jquery添加新元素很容易,面对jquery append 动态添加的元素事件on 不起作用我们该如何解决呢?on方法中要先找到原选择器(如例.info),再找到动态添加的选择器(如列.delet ...

  9. [转]jquery append 动态添加的元素事件on 不起作用的解决方案

    用jquery添加新元素很容易,面对jquery append 动态添加的元素事件on 不起作用我们该如何解决呢?on方法中要先找到原选择器(如例.info),再找到动态添加的选择器(如列.delet ...

随机推荐

  1. android 生成验证码图片

    (转自:http://blog.csdn.net/onlyonecoder/article/details/8231373) package com.nobeg.util; import java.u ...

  2. Apple Watch的课表应用iOS源码项目

    源码Class-Timetable,小清新风格的课表应用,可以按周或按天显示课表.按天显示时,左右滑动屏幕可以查看前一天或后一天的课表.功能:可以双模式切换(按天显示,按周显示,可以和 Apple W ...

  3. hammer.js的六大事件

    1.Pan事件:在指定的dom区域内,一个手指放下并移动事件,即触屏中的拖动事件.这个事件在触屏开发中比较常用: Panstart 拖动开始 Panmove 拖动过程 Panend 拖动结束 Panc ...

  4. mysql5.7.13-windows 免安装版配置简介

    1.下载mysql5.7.13-windows版本 (1)mysql5.7.13-win64版本百度云下载链接分享地址:链接:http://pan.baidu.com/s/1slMl4Ah 密码:w6 ...

  5. [转]NET Core中实现一个Token base的身份认证

    本文转自:http://www.cnblogs.com/Leo_wl/p/6077203.html 注:本文提到的代码示例下载地址> How to achieve a bearer token ...

  6. 浅谈Oracle权限体系

    对于数据库来讲,安全性的重要程度不言而喻,今天我们就来聊一聊Oracle的权限体系. 1.账户管理 在此之前,先解释下一个容易混淆的概念:模式.所谓模式,指的是用户账户所拥有的一组对象(比如表,索引, ...

  7. 数据库SQL基本操作

    1.查询表结构 desc 表名 2.显示当前连接用户 show user 3.查看系统拥有哪些用户 select * from all_users; 4.查询当前用户下所有对象 select * fr ...

  8. 在 Azure HDInsight 中安装和使用 Spark

    Spark本身用Scala语言编写,运行于Java虚拟机(JVM).只要在安装了Java 6以上版本的便携式计算机或者集群上都可以运行spark.如果您想使用Python API需要安装Python解 ...

  9. python3 下的文件输入输出特性以及如何覆盖文件内容和接下去输入

    今天碰到了一个非常有意思的python特性.本来我是想打开一个文件,在文件的末尾接下去输入一些内容的,代码如下: f = open('test.txt', 'r+') f.write(content) ...

  10. 我的CentOS 7 U盘安装之路 (Win 8.1 Profession + CentOS 7双系统)

    这次为了学习Linux,尝试着安装了鸟哥书上推荐的CentOS这款Distribution,但是安装的是最新版CentOS 7,好像跟书上的差别有点大呢.安装的过程中走了一些弯路,做了一些尝试最后发现 ...