DataGrid,DataList,Repeater三個數(shù)據(jù)控件都支持模板功能,比如下面是DataList的項模板,
<asp:DataList id="DataList1" runat="server" EnableViewState="False">
<ItemTemplate>
<%# DataBinder.Eval(Container, "DataItem.id") %>
</ItemTemplate>
</asp:DataList>
在一般情況下,這個模板是我們在程序設(shè)計的時候?qū)懰赖,現(xiàn)在我們要做的是怎么在運行時動態(tài)改變模板項的定義。
首先新建一個ASCX用戶自定義控件,內(nèi)容如下:
<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,代碼的規(guī)范必須模板列的規(guī)則。
建好模板后,我們要做的就是怎么在程序里調(diào)用了,第一步,先在頁面的相應位置添加一個空白的Datalist控件,在Page_Load事件里加上一句代碼:
DataList1.ItemTemplate = Page.LoadTemplate("test.ascx")
然后就可以綁定數(shù)據(jù)庫了。。。怎么樣?簡單嗎?