现在的位置: 首页 > 综合 > 正文

[C#] 动态生成GridView的模版列TemplateField,并在模版列TemplateField中添加复选框CheckBox

2017年10月14日 ⁄ 综合 ⁄ 共 1979字 ⁄ 字号 评论关闭

上篇文章,我们可以动态生成GridView的绑定数据列BoundField和命令列CommandField,现在说说如何动态生成GridView的模版列TemplateField,并在模版列TemplateField中添加复选框CheckBox

首先,第一步,创建一个类MyTemplate.cs

public class MyTemplate:ITemplate
{
    
private string strColumnName;
    
private DataControlRowType dcrtColumnType;

    
public MyTemplate()
    
{
        
//
        
// TODO: 在此处添加构造函数逻辑
        
//
    }


    
/// <summary>
    
/// 动态添加模版列
    
/// </summary>
    
/// <param name="strColumnName">列名</param>
    
/// <param name="dcrtColumnType">列的类型</param>

    public MyTemplate(string strColumnName, DataControlRowType dcrtColumnType)
    
{
        
this.strColumnName = strColumnName;
        
this.dcrtColumnType = dcrtColumnType;
    }


    
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: //模版列内容——加载CheckBox 
                CheckBox cb = new CheckBox();
                cb.ID 
= "CheckBox1";
                cb.Checked 
= false;
                ctlContainer.Controls.Add(cb);
                
break;
        }

    }


}

第二步,在绑定GridView方法中,生成模版列

/// <summary>
    
/// 绑定生成GridView
    
/// </summary>
    
/// <param name="gdv">要绑定的GridView</param>
    
/// <param name="dtblDataSource">GridView的数据源</param>
    
/// <param name="strDataKey">GridView的DataKeyNames</param>

    public static void GridViewBind(GridView gdv, DataTable dtblDataSource, string strDataKey)
    
{
        gdv.Columns.Clear();

        gdv.AutoGenerateColumns 
= false;
        gdv.DataSource 
= dtblDataSource;
        gdv.DataKeyNames 
= new string[] { strDataKey };

        TemplateField tfColumn 
= new TemplateField();
        tfColumn.ItemTemplate 
= new MyTemplate("", DataControlRowType.DataRow);
        gdv.Columns.Add(tfColumn);

       
//………………

        gdv.DataBind();
    }

这样模版列也可以动态生成啦!

抱歉!评论已关闭.