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

【Asp.net之旅】--数据绑定控件之ListView
       前几篇博客对数据绑定控件进行了基本的讨论,并添加了一些实例来巩固代码。对于.NET绑定控件,各有其利弊,功能齐全的当属ListView,今天就来讨论下ListView的用法。

      数据绑定控件的文章链接:【Asp.net之旅】--数据绑定控件之Repeater
                                                      【Asp.net之旅】--数据绑定控件之DataList
                                                      【GDI+编程--番外篇(一)】--GridView编程技巧

一、绑定控件之ListView

      

        在往下进行前我们下来讨论下Asp.net的特性,对于Asp.net微软为我们封装了众多的控件,将控件拖拽到页面上就可以使用控件进行编程,而且值得称道的是有些封装良好的控件可以可视化的设置,然后就可以直接开发使用,就正如今天要说的ListView控件。

       ListView控件是功能最强大的数据绑定控件,它能够可视化的开发实现数据的基本操作增删改,另外还支持排序和分页,只不过其分页的效果必须配合DataPager控件。这种分页对于小数据量来说还是很高效的,但对于大数量来说它的效率就很低下了。

       优点:支持增、删、改、排序,继承了分页功能,还支持自定义模板。
       缺点:影响程序性能,大数据量分页效率低下。


二、控件使用技巧

       

        ListView是.net封装良好的控件,该控件是从.framework 3.5开始集成的,它的操作能够完全通过设计前台代码的方式来实现,能够通过可视化的设计窗口完成设计,并且在不编写后台代码的基础上完成开发。

       对于下面示例中使用到的数据源我们使用SqlDataSource控件来绑定,在该控件中添加了增删改查语句,并在语句中指定了使用的参数。

 <!--在为sql语句添加参数时和sql语句的参数添加方法相同,另外如果想要获取行的主键需要在控件中绑定DataKeyNames另外在控件中添加SelectedValue属性即可-->
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:MyBlogConnectionString %>" DeleteCommand="DELETE FROM match WHERE (id=@id)" InsertCommand="INSERT INTO match(name) VALUES (@name)" SelectCommand="SELECT match.* FROM match" UpdateCommand="UPDATE match SET name = @name where id=@id">
            <DeleteParameters>
                <asp:ControlParameter ControlID="ListView1" Name="id" PropertyName="SelectedValue" />
            </DeleteParameters>
            <InsertParameters>
                <asp:Parameter Name="name" />
            </InsertParameters>
            <UpdateParameters>
                <asp:Parameter Name="name" />
                <asp:ControlParameter ControlID="ListView1" Name="id" PropertyName="SelectedValue" />
            </UpdateParameters>
</asp:SqlDataSource>

        Note:想要在ListView中实现增删改的功能,方法有两种,其一可通过在SqlDataSource中编写增删改语句;其二是前篇博客中提供的传统方法,在后台代码中编写控制。下面的代码示例采用的是第一种方法来实现的,这种方法能够不编写后台代码直接实现了增删改,.NET封装了具体的实现过程。

       表格的基本样式,使用CSS样式来控制显示表格的样式。

<style>
        table {