ASP.NET數(shù)據(jù)控件的自定義模板

2010-08-28 10:49:09來源:西部e網(wǎng)作者:

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ù)庫了。。。怎么樣?簡單嗎?

關(guān)鍵詞:ASP.NET

贊助商鏈接: