ASP.NET数据控件的自定义模板

DataGrid,DataList,Repeater三个数据控件都支持模板功能,比如下面是DataList的项模板,

< asp:DataList id = " DataList1 "  runat = " server "  EnableViewState = " False " >
    
< ItemTemplate >
        
<% # DataBinder.Eval(Container,  " DataItem.id " %>
    
</ ItemTemplate >
</ asp:DataList >

在一般情况下,这个模板是我们在程序设计的时候写死的,现在我们要做的是怎么在运行时动态改变模板项的定义。

首先新建一个ASCX用户自定义控件,内容如下:

< TABLE id = " Table1 "  cellSpacing = " 0 "  cellPadding = " 0 "  width = " 100% "  border = " 1 " >
    
< TR >
        
< TH > 操作 </ TH >
        
< TH > 用户名 </ TH >
        
< TH > 论坛ID </ TH >
        
< TH > 电子邮件 </ TH >
        
< TH > 配额 </ TH >
        
< TH > 管理员 </ TH >
    
</ TR >
    
< TR >
        
< TD ><% # DataBinder.Eval(Container,  " DataItem.id " %></ TD >
        
< TD ><% # DataBinder.Eval(Container,  " DataItem.uid " %></ TD >
        
< TD ><% # DataBinder.Eval(Container,  " DataItem.BBSID " , " <a href= "" javascript:showbbsid('{0}'); "" >{0}</a> " %></ TD >
        
< TD ><% # DataBinder.Eval(Container,  " DataItem.email " %></ TD >
        
< TD ><% # DataBinder.Eval(Container,  " DataItem.pur " %></ TD >
        
< TD ><% # DataBinder.Eval(Container,  " DataItem.op " %></ TD >
    
</ TR >
    
< TR >
        
< TD colspan = " 6 " >
            
< TABLE id = " Table2 "  cellSpacing = " 0 "  cellPadding = " 0 "  width = " 100% "  border = " 0 " >
                
< TR >
                    
< TD > 申请理由: </ TD >
                
</ TR >
                
< TR >
                    
< TD ><% # DataBinder.Eval(Container,  " DataItem.memostr " %></ TD >
                
</ TR >
                
< TR >
                    
< TD >< HR ></ TD >
                
</ TR >
                
< TR >
                    
< TD > 认证说明: </ TD >
                
</ TR >
                
< TR >
                    
< TD ><% # DataBinder.Eval(Container,  " DataItem.excuse " %></ TD >
                
</ TR >
            
</ TABLE >
        
</ TD >
    
</ TR >
</ TABLE >


当然,上面例举的只是一个示例,你也可以自己建立一个模板文件,要注意的是,扩展名必须为.ascx,代码的规范必须模板列的规则。

建好模板后,我们要做的就是怎么在程序里调用了,第一步,先在页面的相应位置添加一个空白的Datalist控件,在Page_Load事件里加上一句代码:

DataList1.ItemTemplate 
=  Page.LoadTemplate( " test.ascx "

然后就可以绑定数据库了。。。怎么样?简单吗?

你可能感兴趣的:(asp.net)