绩效考核系统(二)

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

为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);

 

你可能感兴趣的:(百度)