ASP.NET中为DataGrid动态创建模板列

为DataGrid动态创建模板列,首先要实现ITemplate接口:

public   class  MyDataGridTemplate : System.Web.UI.ITemplate
{
    ListItemType _litType;
    
object _objData;
 
    
public MyDataGridTemplate(ListItemType litType, object objData)
    
{
        _litType 
= litType;
        _objData 
= objData;
    }


    
public void InstantiateIn(System.Web.UI.Control container)
    
{
        Literal ltr 
= new Literal();
        TextBox txt 
= new TextBox();
        
        
switch(_litType)
        
{
            
case ListItemType.Header:
                ltr.Text 
= "<b>" + _objData.ToString() + "</b>";
                container.Controls.Add(ltr);
                
break;
            
case ListItemType.Item:
                ltr.Text 
= _objData.ToString();
                container.Controls.Add(ltr);
                
break;
            
case ListItemType.EditItem:
                container.Controls.Add(txt);
                
break;
            
case ListItemType.Footer:
                ltr.Text 
= "<i>" + _objData.ToString() + "</i>";
                container.Controls.Add(ltr);
                
break;
        }

    }

}

现在就可以动态创建模板列了:

TemplateColumn tc;

tc 
=   new  TemplateColumn();
tc.HeaderText 
=   " 列1 " ;
tc.ItemTemplate 
=   new  MyDataGridTemplate(ListItemType.Item,  " 列1 " );
dg.Columns.Add(tc);

tc 
=   new  TemplateColumn();
tc.HeaderText 
=   " 列2 " ;
tc.ItemTemplate 
=   new  MyDataGridTemplate(ListItemType.Item,  " 列2 " );
dg.Columns.Add(tc);

以上代码的效果与下列代码相同:

< asp:TemplateColumn  HeaderText ="列1" >
< ItemTemplate >
    
< asp:Literal  Runat ="server"  Text ="列1" ></ asp:Literal >
</ ItemTemplate >
</ asp:TemplateColumn >

< asp:TemplateColumn  HeaderText ="列2" >
< ItemTemplate >
    
< asp:Literal  Runat ="server"  Text ="列2" ></ asp:Literal >
</ ItemTemplate >
</ asp:TemplateColumn >


 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值