绩效考核系统(二)

本文介绍了一种为ASP.NET GridView控件自动生成模板列的方法,通过继承ITemplate接口并实现InstantiateIn方法,根据不同行类型创建相应的列标题或内容。此外,还提供了数据绑定的示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

经过两天努力,系统已经完工,剩下的测试就交给人力资源部门,原本以为十分容易,其实实现起来还是被几个问题纠缠着,好在有百度和优快云,帮助我迅速解决掉问题,所以说办法总还是比问题多的.

为GridView自动生成模板列

主要是继承 ITemplate:

public class MyTemplate : ITemplate
    {

        private string strColumnName;

        private DataControlRowType dcrtColumnType;

        private string strBindName;

        private string txtID;

        /// <summary>
        /// 初始化模板列
        /// </summary>
        /// <param name="strColumnName">列名</param>
        /// <param name="dcrtColumnType">行类型</param>
        /// <param name="strBindName">绑定名称</param>
        /// <param name="txtID">控件ID</param>
        public MyTemplate(string strColumnName, DataControlRowType dcrtColumnType,string strBindName,string txtID)
        {

            this.strColumnName = strColumnName;

            this.dcrtColumnType = dcrtColumnType;

            this.strBindName = strBindName;

            this.txtID = txtID;
        }



        public void InstantiateIn(Control ctlContainer)
        {

            switch (dcrtColumnType)
            {

                case DataControlRowType.Header: //列标题

                    Literal ltr = new Literal();

                    ltr.Text = strColumnName;

                    ctlContainer.Controls.Add(ltr);

                    break;

                case DataControlRowType.DataRow: //模版列内容
                    TextBox txt = new TextBox();

                    txt.ID = this.txtID;

                    txt.DataBinding += new EventHandler(this.OnDataBinding);

                    txt.Width = 90;

                    txt.Attributes.Add("onblur", "return chktxt(this);");

                    ctlContainer.Controls.Add(txt);

                    break;
            }
        }

        public void OnDataBinding(object sender, EventArgs e)
        {
            TextBox t = (TextBox)sender;
            GridViewRow container = (GridViewRow)t.NamingContainer;
            t.Text = ((DataRowView)container.DataItem)[strBindName].ToString(); 
        } 
    }

 在页面调用

string[] s = dt.Columns[i].ToString().Split('@');
tp.HeaderTemplate = new MyTemplate(s[0], DataControlRowType.Header, dt.Columns[i].ToString(), s[1]);
tp.ItemTemplate = new MyTemplate(s[0], DataControlRowType.DataRow, dt.Columns[i].ToString(), s[1]);
grdview.Columns.Add(tp);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值