平常时一般不会去动态创建Gridview列(column),但是程序有时就会需要这样去做。下面这个例子,是在Insus.NET开发的一个专案使用,现把它抽取分享出来,如果你有需求,可以参详。如下图:

这个动态添加的列(上图红色方框),会放置一个图片铵钮ImageButton。可以写一个列类别,实作在命名空间System.Web.UI下的ITemplate接口,在runtime时new 这个列类别即可。下面是DetailColumn类别,重点部分已经有注释:

DetailColumn

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
//引用下面两个命名空间
using System.Web.UI;
using System.Web.UI.WebControls;

/// <summary>
/// Summary description for DetailColumn
/// </summary>
namespace Insus.NET
{
    public class DetailColumn : ITemplate  //实作ITemplate接口
    {
       //宣告两个变量,一个为RowType,另一个是列Header名。
        private DataControlRowType _dataControlRowType;
        private string _columnName;

public DetailColumn()
        {
            //
            // TODO: Add constructor logic here
            //
        }

//在页面调用时,将使用下面这个构造函数
        public DetailColumn(DataControlRowType dataControlRowType, string columnName)
        {
            _dataControlRowType = dataControlRowType;
            _columnName = columnName;
        }

#region ITemplate Members

public void InstantiateIn(Control container)
        {
            switch (_dataControlRowType)
            {
                case DataControlRowType.Header:
                    Literal LiteralHeader = new Literal();
                    LiteralHeader.Text = _columnName;  //设置Header的文本。
                    container.Controls.Add(LiteralHeader);
                    break;
                case DataControlRowType.DataRow:
                    ImageButton imageButton = new ImageButton();
                    imageButton.ID = "ImageButtonDetails";  //设定ImageButton的ID值。
                    imageButton.ImageAlign = ImageAlign.AbsMiddle;  //设置Button的对齐方式
                    imageButton.CausesValidation = false;
                    imageButton.ImageUrl = "~/details.gif";  //图片铵钮ImageUrl
                    container.Controls.Add(imageButton);
                    break;
                default:
                    break;
            }
        }

#endregion
    }
}

在.aspx.cs页面调用这个列类别:

View Code

 protected void Page_Load(object sender, EventArgs e)
    {
            Data_Binding();
    }

private void Data_Binding()
    {
        this.GridViewMember.DataSource = objMember.GetMember();
      
        //new TemplateField实例
        TemplateField templateField = new TemplateField();

//创建HeaderTemplate
        templateField.HeaderTemplate = new DetailColumn(DataControlRowType.Header, "详细");

//创建ItemTemplate
        templateField.ItemTemplate = new DetailColumn(DataControlRowType.DataRow,string.Empty);
        GridViewMember.Columns.Add(templateField);

GridViewMember.DataBind();
    }

从这个实例开始,将会陆续把Demo的代码打包上传,因为太多网友联系Insus.NET索取Demo代码了。

本实例程序包,可以从下面地址下载,运行在.net 4.0环境,数据库是MSSQL Server 2008 R2 64bit,另外还有一个Dll组件,也可以下载放入Bin目录中,另外程序包中数据库是一个.bak文件,你做一个恢复即可。

http://download.cnblogs.com/insus/ASPDOTNET/DynamicallyAddColumnInGridView.rar

http://www.cnblogs.com/insus/articles/1654653.html

动态为GridView控件创建列相关推荐

  1. asp.net GridView控件的列属性

    BoundField 默认的数据绑定类型,通常用于显示普通文本 CheckBoxField 显示布尔类型的数据.绑定数据为TRUE时,复选框数据绑定列为选中状态:绑定数据为FALSE时,则显示未选中状 ...

  2. 动态合并Repeater控件数据列

    前天Insus.NET实现<动态合并GridView数据行DataRow的列>.今天再玩玩Repeater控件,功能也是动态合并某列栏位. Repeater控件跟GridView控件一样集 ...

  3. ASP.NET GridView控件在列上格式化时间

    症状:在GridView绑定日期格式的时候,数据库中的日期为2008-07-04,而GridView显示的是2007-07-04 000000.. 解决办法:想把这后面这多余的零去掉的话在绑定时间的那 ...

  4. 动态绑数据(GridView控件Header和ItemTemplate)

    想了解此篇文章,建议先预习一下<动态变更GridView控件列名>http://www.cnblogs.com/insus/p/3232057.html,因为多少有些关联.不管怎样,它能够 ...

  5. Highlight(高亮)Gridview控件列

    一般情况之下,我们很轻易实现Gridview控件的行高亮,而想实现GridView控件的列高亮,是有点难度的.本博文也轻易教你实现GridView控件的列高亮. 在实现之前,我得准备数据,并绑定于网页 ...

  6. GridView控件

    GridView简介: GridView控件以表格的形式显示数据源的值,没列表示一个字段,每行表示一条记录. 该控件提供了内置排序功能.内置更新(修改)和删除.分页.行选择功能.以编程方式访问Grid ...

  7. GridView 控件

    如何响应GridView 控件中的按钮事件 (转) 2009-06-18 21:47 在单击 GridView 控件中的按钮时,将引发 RowCommand 事件.GridView 控件具有内置功能, ...

  8. 在 GridView 控件中添加一列复选框51

    简介 在前面的教程中 , 我们学习了如何为 GridView 控件添加一列 单选 按钮来选择一个特定的记录.当用户被限制最多只能从网格中选中一项时,一列单选按钮是一个非常恰当的用户界面.然而,有时我们 ...

  9. GridView控件RowDataBound事件中获取列字段值的几种途径

    前台: <asp:TemplateField HeaderText="充值总额|账号余额"><ItemTemplate><asp:Label ID=& ...

最新文章

  1. Python3 的内置函数和闭包
  2. Sobel边缘检测算法verilog实现及仿真
  3. sqlserver安装显示句柄无效_Sqlserver 2016 R Service环境安装的各种错误(坑)解决办法...
  4. 可信云认证累计达20项,腾讯云技术创新能力再获专业认可
  5. 静电场与电流场_2021高考复习:静电场考点突破微专题11 带电粒子在交变电场中的运动 9.26...
  6. 那个20多万“不可描述”照片的数据集,有人用它做了鉴黄模型 | Demo
  7. 【UE4】UE4GamePlay架构
  8. Android保存音频文件
  9. 万能pdf阅读器卸载
  10. win10怎么更新Android驱动,w10怎么更新驱动程序_教你win10更新驱动程序的方法步骤...
  11. Pspice仿真实验B-2
  12. mysql sock golang_golang socket连接复用 - smux
  13. 《2022爱分析·银行数字化厂商全景报告》发布,菊风连续入选「视频银行」优质代表厂商
  14. 弹幕游戏:Ryan 最近迷上了弹幕游戏。所谓弹幕游戏,指的是玩家操控一位角色对来袭的大量敌人进行攻击,并在过程中升级、强化自我的能力,最终打败 Boss 的一类游戏...
  15. RecSys'22|CARCA:交叉注意力感知上下文和属性进行推荐
  16. java骑车与走路_骑行/步行路线规划
  17. 探讨位操作、算术右移、逻辑右移
  18. 1N系列常用整流二极管的主要参数
  19. 【生活】罗曼·罗兰语录
  20. 菜鸟如何用Python将交互数据生成邻接矩阵(超详细)

热门文章

  1. 巴黎圣母院大火之后,AI 技术如何在文物修复场景落地?
  2. 用turtle画中国象棋棋盘
  3. Redis 常见的性能问题和解决方法
  4. iOS:NAV+TABLE结合
  5. Too_many_open_files_问题的解决
  6. CSS学习 -- 3种命名方式及规则
  7. PPC WM5 输入法屏蔽插件
  8. 中国主要城市的DNS列表
  9. 46muduo库使用示例(五)
  10. 【写作技巧】毕业论文结构一文通