GridView动态添加Templete项

最近的碰到一个问题,就是GridView后台怎样动态添加Templete项。比方说,有个 BankCardChangeManage.aspx页面,其中的GridView显示的要求是一些公用的项,比如“用户ID,旧账号”等项,但又要根据传递的stype参数和用户的权限添加一些其他项。我是用模板类实现的。
模板类代码如下:
Code
 1namespace Nimeux.Web.UI
 2{
 3    public class NimeuxTemplete : ITemplate
 4    {
 5        private string _colname;
 6
 7        /**//// <summary>
 8        /// 构造函数
 9        /// </summary>
10        /// <param name="colname">列的名字(对应数据库的字段)</param>

11        public NimeuxTemplete(string colname)
12        {
13            this._colname = colname;
14        }

15
16        /**//// <summary>
17        /// 实现接口ITemplate的方法
18        /// </summary>
19        /// <param name="container"></param>
20        /// <remarks>
21        /// 1、new一个LiteralControl
22        /// 2、给LiteralControl加一个绑定事件
23        /// 3、把该控件加到容器控件集合里
24        /// </remarks>

25        public void InstantiateIn(Control container)
26        {
27            LiteralControl l = new LiteralControl();
28            l.DataBinding += new EventHandler(this.OnDataBinding);
29            container.Controls.Add(l);
30        }

31
32        private void OnDataBinding(object sender, EventArgs e)
33        {
34            LiteralControl l = (LiteralControl)sender;
35
36            // 得到l的容器(父亲)——GridViewRow
37            GridViewRow container = (GridViewRow)l.NamingContainer;
38            // 通过列名(对应数据库的字段)给l赋值
39            l.Text = ((DataRowView)container.DataItem)[_colname].ToString();
40        }

41    }

42}

然后,在页面中编写了一个私有方法如下:
Code
 1/**//// <summary>
 2        /// 根据不同参数显示不部内容
 3        /// </summary>
 4        /// <param name="flag">标记参数</param>

 5        private void Show(int flag)
 6        {
 7            if (flag == 2)
 8            {
 9                TemplateField tf1 = new TemplateField();
10                NimeuxTemplete nt1 = new NimeuxTemplete("OldCard");
11                tf1.HeaderText = "旧卡号";
12                tf1.ItemTemplate = nt1;
13
14                TemplateField tf2 = new TemplateField();
15                NimeuxTemplete nt2 = new NimeuxTemplete("NewCard");
16                tf2.HeaderText = "新卡号";
17                tf2.ItemTemplate = nt2;
18
19                this.gvFSBT.Columns.Add(tf1);
20                this.gvFSBT.Columns.Add(tf2);
21            }

22            else
23            {
24                TemplateField tf1 = new TemplateField();
25                NimeuxTemplete nt1 = new NimeuxTemplete("NewCard");
26                tf1.HeaderText = "卡号";
27                tf1.ItemTemplate = nt1;
28
29                TemplateField tf2 = new TemplateField();
30                NimeuxTemplete nt2 = new NimeuxTemplete("ChangeContent");
31                tf2.HeaderText = "登记内容";
32                tf2.ItemTemplate = nt2;
33
34                this.gvFSBT.Columns.Add(tf1);
35                this.gvFSBT.Columns.Add(tf2);
36            }

37        }

这样根据flag传递的参数就可以显示不同的内容了。GridView通过模板动态添加项应用非常多,我这里只是根据一些要求做简单的应用罢了。为了使自己的博客充实一点,就写了下了。

转载于:https://www.cnblogs.com/Nimeux/archive/2008/06/16/1223321.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值