gridview 动态加载模板列

    #region 自定义模板列类
    public class GridViewTemplate : ITemplate
    {
        private string proName;

        public GridViewTemplate()
        {

        }

        public string ProName//要绑定的数据源字段名称
        {
            set { proName = value; }
            get { return proName; }
        }

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

        void lbtn_DataBinding(object sender, EventArgs e)
        {
            LinkButton lbtn = (LinkButton)sender;
            GridViewRow container = (GridViewRow)lbtn.NamingContainer;
            //关键位置
            //使用DataBinder.Eval绑定数据
            //ProName,MyTemplate的属性.在创建MyTemplate实例时,为此属性赋值(数据源字段)
            lbtn.Text = DataBinder.Eval(container.DataItem, ProName).ToString();
            lbtn.CommandName = "btnDate";
            lbtn.ForeColor = System.Drawing.Color.Blue;
            lbtn.CommandArgument = DataBinder.Eval(container.DataItem, ProName).ToString();
        }
    }
    #endregion

 

 


    #region 动态绑定HeadGridView
    /// <summary>
    /// 动态绑定HeadGridView
    /// </summary>
    private void BindToHeadGridView()
    {
        //要清零列不然后出现很多重复列
        HeadGridView.Columns.Clear();

        //动态生成模板列
        TemplateField template = new TemplateField();
        template.HeaderText = "营业日期";
        GridViewTemplate mt = new GridViewTemplate();
        mt.ProName = "fAccDate";//数据源字段
        template.ItemTemplate = mt;
        HeadGridView.Columns.Add(template);

        //动态添加其他列
        DataTable dtDaySale = new Organize().GetPaySaleData("VIEW_DaySale", _WhereStr).Tables[0];
        //删除不需要显示的列
        dtDaySale.Columns.Remove("fCustID");
        dtDaySale.Columns.Remove("fOrgNo");
        dtDaySale.Columns.Remove("fOrgName");
 
        //绑定HeadGridView
        HeadGridView.DataSource = dtDaySale;
        HeadGridView.DataBind();
    }
    #endregion

 

 

  //读取并绑定数据
    private void Display()
    {
        BindToHeadGridView();
    }

 

 

============注意=======

 要把 Display() 放在 Page_Load()事件里(if(!IsPostBack)的外边),否则会出现丢失模板列的情况

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值