日期:2014-05-16  浏览次数:21063 次

【Asp.net之旅】--数据绑定控件之DataList
       上篇博客讨论了Repeater控件的基本用法,它是最基本的数据绑定控件,只提供了数据绑定的功能,熟练运用Repeater控件后,其它类似的数据绑定控件就很简单了。接着我们上篇博客的内容继续,今天来讨论下DataList的基本使用方法。


一、绑定控件之DataList


       该控件可以以自定义的格式显示各种数据源的字段,其显示数据的格式在创建的模板中定义,可以为项、交替项、选定项和编辑项创建模板。该控件也可以使用标题、脚注和分隔符模板自定义整体外观,还可以一行显示多个数据行。虽然DataList控件拥有很大的灵活性,但其本身不支持数据分页,编程者需要通过自己编写方法完成分页的功能。仅用于数据的显示,不支持编辑、插入、删除。
       优点:自定义格式显示数据、比较灵活。
       缺点:不支持分页,编辑插入。


   1、DataList简介


        上文说到DataList控件不仅能够灵活的显示数据,而且还支持编辑、插入、删除操作。想要显示数据基本的模板是必不可少的,相同的该控件也为开发人员提供了基本的模板使用。另外DataList不但提供了基本的ItemCommand事件,而且还封装了删除、取消、编辑、更新事件。通过将数据绑定到EditItemTemplate模板中能够容易的进入编辑状态,具体方法将会在下文中讲到。


        对于基本的模板和事件的使用方法上篇文章已经讨论,在此将不会深入的讨论。


二、控件使用技巧


 1、基本操作--增删改


      下面的代码示例使用Asp.net实现,能够对数据进行增加、删除、修改。DataList控件封装了基本的删除和修改模板,但没有继承插入功能,示例中的插入使用的是Asp.net的Literal控件来实现的,具体实现方法如下。
      删除页面:


    添加页面:


    编辑页面:



      前台代码:和Repeater控件基本用法相同,不同的是新增加了编辑模板,在编辑模板中绑定了数据,在进行编辑操作时只要跳转到编辑模板即可。代码中在基本模板ItemTemplate中添加了Literal控件,当点击添加按钮时再后台动态的添加新行,并在新行中添加数据控件。具体后台代码如下。

<div>
    <asp:DataList ID="DataList1" runat="server" OnItemCommand="DataList1_ItemCommand" OnCancelCommand="DataList1_CancelCommand" OnUpdateCommand="DataList1_UpdateCommand" OnEditCommand="DataList1_EditCommand" OnDeleteCommand="DataList1_DeleteCommand">
        <HeaderTemplate>
            <table border="1px" cellpadding="1px" cellspacing="5px" style="text-align:center;border-collapse:collapse;border-color:red;">
                <tr style="background-color:yellow;">    
                    <th>ID</th>
                    <th>内容</th>
                    <th>编辑</th>
                </tr>
        </HeaderTemplate>
        <ItemTemplate>
            <tr onmouseover="backcolor=this.style.backgroundColor;this.style.backgroundColor='#6699ff'" onmouseout="this.style.backgroundColor=backcolor">
                <td><%# Eval("id") %></td>
                <td><%# Eval("name") %></td>
                <td>
                    <asp:LinkButton ID="lbtDelete" runat="server" CommandName="Delete" CommandArgument='<%#Eval("id") %>'>删除</asp:LinkButton>
                    <asp:LinkButton ID="lbtEdit" runat="server" CommandName="Edit" CommandArgument='<%#Eval("name") %>'>编辑</asp:LinkButton>
                    <asp:LinkButton ID="